public NESEmulator(byte[] rom, ProcessFrameDelegate processFrameDelegate, enumEmulatorSpeed emulatorSpeed = enumEmulatorSpeed.Normal) { //Setup Emulator Components Controller1 = new NESController(); _cartridge = new NESCartridge(rom); _ppu = new PPU.Core(_cartridge.MemoryMapper, DMATransfer); _cpu = new CPU.Core(_cartridge.MemoryMapper, Controller1); _enumEmulatorSpeed = emulatorSpeed; _processFrame = processFrameDelegate; }
public NESCartridge LoadCartridge() { var cartridge = new NESCartridge { CharacterRomBanks = this.CharacterBanks, MirroringMode = this.MirroringMode, ProgramRAMBanks = this.RAMBanks, ProgramROMBanks = this.ROMBanks, Trainer = this.Trainer, SRAM = this.SRAM, }; var crc = new Crc32(); for (int i = 0; i < cartridge.ProgramROMBanks.Count; i++) { crc.Update(cartridge.ProgramROMBanks[i]); } for (int i = 0; i < cartridge.CharacterRomBanks.Count; i++) { crc.Update(cartridge.CharacterRomBanks[i]); } cartridge.Crc32 = crc.Value.ToString("X"); var entry = NESDatabase.GetRomDetails(cartridge.Crc32); if (entry != null && entry.MapperId != this.MemoryMapperId) { Log.Information($"Mapper in the ROM ({this.MemoryMapperId}) is not what the databases say...({entry.MapperId}) trusting databases."); this.MemoryMapperId = entry.MapperId; } cartridge.InitializeMapper(this.MemoryMapperId); return(cartridge); }
public BaseMapper(string name, NESCartridge cartridge) : base(new Range(0x8000, 0xFFFF), $"{name} Mapper") { this.cartridge = cartridge; }
public UNROM(NESCartridge cartridge, MemoryMapperIds memoryMapperIds) : base(cartridge, MemoryMapperIds.UNROM) { }
public NROM(NESCartridge cartridge, MemoryMapperIds id = MemoryMapperIds.NROM) : base(id.ToString(), cartridge) { }
public CartridgeLoadedArgs(NESCartridge cartridge) { this.Cartridge = cartridge; }
// private int programBank; // private int characterBank; public GNROM(NESCartridge cartridge) : base(cartridge, MemoryMapperIds.GNROM) { }
public CNROM(NESCartridge cartridge, MemoryMapperIds id = MemoryMapperIds.CNROM) : base(cartridge, id) { }