/// <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); }
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; }
/// <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); }
private void LoadInitialMemory(CartridgeModel cartridgeModel) { Array.Copy(cartridgeModel.VROMBanks[0], _internalMemory, 8192); }
/// <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]; }