Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 public BaseMapper(string name, NESCartridge cartridge)
     : base(new Range(0x8000, 0xFFFF), $"{name} Mapper")
 {
     this.cartridge = cartridge;
 }
Exemplo n.º 4
0
 public UNROM(NESCartridge cartridge, MemoryMapperIds memoryMapperIds)
     : base(cartridge, MemoryMapperIds.UNROM)
 {
 }
Exemplo n.º 5
0
 public NROM(NESCartridge cartridge, MemoryMapperIds id = MemoryMapperIds.NROM)
     : base(id.ToString(), cartridge)
 {
 }
Exemplo n.º 6
0
 public CartridgeLoadedArgs(NESCartridge cartridge)
 {
     this.Cartridge = cartridge;
 }
Exemplo n.º 7
0
        // private int programBank;
        // private int characterBank;

        public GNROM(NESCartridge cartridge)
            : base(cartridge, MemoryMapperIds.GNROM)
        {
        }
Exemplo n.º 8
0
 public CNROM(NESCartridge cartridge, MemoryMapperIds id = MemoryMapperIds.CNROM)
     : base(cartridge, id)
 {
 }