Пример #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);
 }
Пример #2
0
        /// <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;
        }
Пример #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);
 }
Пример #4
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];
        }