diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.Core.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.Core.cs index 5af6441988..69942626d8 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.Core.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.Core.cs @@ -683,7 +683,7 @@ public byte ReadReg2xxx(ushort addr) return Board.ReadReg2xxx(addr); } - public byte ReadRegDelegate(ushort addr) + public byte ReadRegs(ushort addr) { return ReadReg(addr); } @@ -702,35 +702,43 @@ public byte ReadWRAM(ushort addr) private void RegisterReadDelegates() { + ReadMemoryDelegate ReadROMDelegate = new ReadMemoryDelegate(ReadROM); + ReadMemoryDelegate ReadRAMDelegate = new ReadMemoryDelegate(ReadRAM); + ReadMemoryDelegate ReadRAMMirrorsDelegate = new ReadMemoryDelegate(ReadRAMMirrors); + ReadMemoryDelegate ReadReg2xxxDelegate = new ReadMemoryDelegate(ReadReg2xxx); + ReadMemoryDelegate ReadRegsDelegate = new ReadMemoryDelegate(ReadRegs); + ReadMemoryDelegate ReadEXPDelegate = new ReadMemoryDelegate(ReadEXP); + ReadMemoryDelegate ReadWRAMDelegate = new ReadMemoryDelegate(ReadWRAM); + for (int addr = 0; addr < 0x10000; addr++) { if (addr >= 0x8000) { - ReadDelegates[addr] = new ReadMemoryDelegate(ReadROM); + ReadDelegates[addr] = ReadROMDelegate; } else if (addr < 0x0800) { - ReadDelegates[addr] = new ReadMemoryDelegate(ReadRAM); + ReadDelegates[addr] = ReadRAMDelegate; } else if (addr < 0x2000) { - ReadDelegates[addr] = new ReadMemoryDelegate(ReadRAMMirrors); + ReadDelegates[addr] = ReadRAMMirrorsDelegate; } else if (addr < 0x4000) { - ReadDelegates[addr] = new ReadMemoryDelegate(ReadReg2xxx); + ReadDelegates[addr] = ReadReg2xxxDelegate; } else if (addr < 0x4020) { - ReadDelegates[addr] = new ReadMemoryDelegate(ReadRegDelegate); + ReadDelegates[addr] = ReadRegsDelegate; } else if (addr < 0x6000) { - ReadDelegates[addr] = new ReadMemoryDelegate(ReadEXP); + ReadDelegates[addr] = ReadEXPDelegate; } else { - continue; + ReadDelegates[addr] = ReadWRAMDelegate; } } } @@ -792,7 +800,7 @@ public void WriteReg2xxx(ushort addr, byte value) Board.WriteReg2xxx(addr, value); } - public void WriteRegDelegate(ushort addr, byte value) + public void WriteRegs(ushort addr, byte value) { WriteReg(addr, value); } @@ -811,35 +819,43 @@ public void WriteWRAM(ushort addr, byte value) private void RegisterWriteDelegates() { + WriteMemoryDelegate WriteROMDelegate = new WriteMemoryDelegate(WriteROM); + WriteMemoryDelegate WriteRAMDelegate = new WriteMemoryDelegate(WriteRAM); + WriteMemoryDelegate WriteRAMMirrorsDelegate = new WriteMemoryDelegate(WriteRAMMirrors); + WriteMemoryDelegate WriteReg2xxxDelegate = new WriteMemoryDelegate(WriteReg2xxx); + WriteMemoryDelegate WriteRegsDelegate = new WriteMemoryDelegate(WriteRegs); + WriteMemoryDelegate WriteEXPDelegate = new WriteMemoryDelegate(WriteEXP); + WriteMemoryDelegate WriteWRAMDelegate = new WriteMemoryDelegate(WriteWRAM); + for (int addr = 0; addr < 0x10000; addr++) { if (addr >= 0x8000) { - WriteDelegates[addr] = new WriteMemoryDelegate(WriteROM); + WriteDelegates[addr] = WriteROMDelegate; } else if (addr < 0x0800) { - WriteDelegates[addr] = new WriteMemoryDelegate(WriteRAM); + WriteDelegates[addr] = WriteRAMDelegate; } else if (addr < 0x2000) { - WriteDelegates[addr] = new WriteMemoryDelegate(WriteRAMMirrors); + WriteDelegates[addr] = WriteRAMMirrorsDelegate; } else if (addr < 0x4000) { - WriteDelegates[addr] = new WriteMemoryDelegate(WriteReg2xxx); + WriteDelegates[addr] = WriteReg2xxxDelegate; } else if (addr < 0x4020) { - WriteDelegates[addr] = new WriteMemoryDelegate(WriteRegDelegate); + WriteDelegates[addr] = WriteRegsDelegate; } else if (addr < 0x6000) { - WriteDelegates[addr] = new WriteMemoryDelegate(WriteEXP); + WriteDelegates[addr] = WriteEXPDelegate; } else { - continue; + WriteDelegates[addr] = WriteWRAMDelegate; } } }