Exemplo n.º 1
0
 /// <summary>
 /// Public Constructor for the Engine
 /// </summary>
 /// <param name="fileName">The full path of a .nes cartridge file</param>
 public Engine(string fileName)
 {
     
     _cartridgeModel = CartridgeLoaderUtility.LoadCartridge(fileName);
     Processor = _cartridgeModel.GetProcessor();
     PictureProcessingUnit = new PPU(_cartridgeModel, Processor);
 }
Exemplo n.º 2
0
        private static byte[] GetInitialProgram(CartridgeModel cartridgeModel)
        {
            var initialProgram = new byte[cartridgeModel.ROMBanks.GetLength(0) > 1 ? 32768 : 16384 ];

            Array.Copy(cartridgeModel.ROMBanks[0], initialProgram, 16384);
            Array.Copy(cartridgeModel.ROMBanks[1], 0, initialProgram, 16384, 16384);

            return initialProgram;
        }
Exemplo n.º 3
0
 /// <summary>
 /// Public Constructor for the Engine
 /// </summary>
 /// <param name="rawBytes">The raw bytes from a .net cartridge file</param>
 public Engine(byte[] rawBytes)
 {
     _cartridgeModel = CartridgeLoaderUtility.LoadCartridge(rawBytes);
     Processor = _cartridgeModel.GetProcessor();
     PictureProcessingUnit = new PPU(_cartridgeModel, Processor);
 }
Exemplo n.º 4
0
 private void LoadInitialMemory(CartridgeModel cartridgeModel)
 {
     Array.Copy(cartridgeModel.VROMBanks[0], _internalMemory, 8192);
 }
Exemplo n.º 5
0
        /// <summary>
        /// Constructor for the PPU
        /// </summary>
        /// <param name="cartridgeModel"></param>
        /// <param name="cpu"></param>
        internal PictureProcessingUnit(CartridgeModel cartridgeModel, CPU cpu)
        {
            _cpu = cpu;
            _cpu.CycleCountIncrementedAction = CPUCycleCountIncremented;
            _cpu.ReadMemoryAction = ReadMemoryAction;
            _cpu.WriteMemoryAction = WriteMemoryAction;

            LoadInitialMemory(cartridgeModel);
            OnNewFrameAction = () => { };
            ScanLine = 241;
            CycleCount = 0;
            _isRenderingDisabled = true;
             
            CurrentFrame = new byte[195840];
            _newFrame = new byte[195840];
        }