/// <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); }
/// <summary> /// Gets a new instance of the 6502 Processor /// </summary> /// <param name="cartridgeModel">The cartridge to load. </param> /// <param name="programCounter">The initial Program Counter</param> /// <returns>A Processor Object</returns> internal static CPU GetProcessor(this CartridgeModel cartridgeModel, int programCounter) { var initialProgram = GetInitialProgram(cartridgeModel); var cpu = new CPU(); cpu.LoadProgram(0x8000, initialProgram, programCounter); return cpu; }
/// <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); }
/// <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]; }