public PpuControlBus(I2C02 ppu) { this.ppu = ppu; }
public OamDirectMemoryAccess(I2C02 ppu, Ram cpuMemory) { _ppu = ppu; _cpuMemory = cpuMemory; }
public override bool OnUserCreate() { // SETUP THE RAM _ram = new Ram(NES_RAM_SIZE); // SETUP THE BUSSES _cpuBus = new DataBus(CPU_ADDRESSABLE_RANGE); _ppuBus = new DataBus(PPU_ADDRESSABLE_RANGE); _cpuBus.ConnectDevice(_ram, 0x0000, 0x1FFF); // SETUP THE CPU _cpu = new Cpu(_cpuBus); // SETUP THE PPU _ppu = new Ppu(_ppuBus, _cpu); _oamDma = new OamDirectMemoryAccess(_ppu, _ram); _ppuControlBus = new PpuControlBus(_ppu); _cpuExtended = new CpuExtended(_oamDma, _cpu); _cpuBus.ConnectDevice(_cpuExtended, 0x4000, 0x4015); // 4016 is connected to controller device _cpuBus.ConnectDevice(_cpuExtended, 0x4017, 0x401F); _cpuBus.ConnectDevice(_ppuControlBus, 0x2000, 0x3FFF); // SETUP THE CARTRIDGE _cartridge = new Cartridge(); //_cartridge.Load(@"D:\tmp\full_palette.nes"); //_cartridge.Load(@"D:\tmp\nestest.nes"); //_cartridge.Load(@"D:\tmp\Legend of Zelda, The (USA).nes"); _cartridge.Load(@"E:\games\roms\Super Mario Bros (E).nes"); //_cartridge.Load(@"D:\tmp\Super Mario Bros. 3 (USA).nes"); //_cartridge.Load(@"D:\tmp\Clu Clu Land (World).nes"); //_cartridge.Load(@"D:\tmp\DuckTales (USA).nes"); //_cartridge.Load(@"D:\tmp\Chip n Dale - Rescue Rangers (USA).nes"); //_cartridge.Load(@"D:\tmp\Ninja Gaiden (USA).nes"); _cartridge.Insert(_cpuBus, _ppuBus); if (_cartridge.Mapper.NameTableSize < 0x2000) { _vram = new NameTableRam(_cartridge); _ppuBus.ConnectDevice(_vram, 0x2000, 0x3EFF); _paletteRam = new PaletteRam(); _ppuBus.ConnectDevice(_paletteRam, 0x3F00, 0x3FFF); } _controller = new Controller(); _cpuBus.ConnectDevice(_controller, 0x4016, 0x4016); // RESET TO INITIAL STATE _cpu.Reset(); //Thread printThread = new Thread(this.tStart); //printThread.Start(); //_ppuThread = new Thread(this.ppuStart); //_cpuThread = new Thread(this.cpuStart); //_ppuThread.Start(_ppu); //_cpuThread.Start(_cpu); //Thread main = new Thread(this.mainStart); //main.Start(); return(true); }