diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Core.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Core.cs index 90449b4578..a033f081b7 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Core.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Core.cs @@ -286,15 +286,34 @@ namespace BizHawk.Emulation.Consoles.Nintendo public void WriteMemory(ushort addr, byte value) { - if (addr < 0x0800) ram[addr] = value; - else if (addr < 0x1000) ram[addr - 0x0800] = value; - else if (addr < 0x1800) ram[addr - 0x1000] = value; - else if (addr < 0x2000) ram[addr - 0x1800] = value; - else if (addr < 0x4000) ppu.WriteReg(addr & 7, value); - else if (addr < 0x4020) WriteReg(addr, value); //we're not rebasing the register just to keep register names canonical - else if (addr < 0x6000) board.WriteEXP(addr - 0x4000, value); - else if (addr < 0x8000) board.WriteWRAM(addr - 0x6000, value); - else board.WritePRG(addr - 0x8000, value); + if (addr < 0x0800) + { + ram[addr] = value; + } + else if (addr < 0x2000) + { + ram[addr & 0x7FF] = value; + } + else if (addr < 0x4000) + { + ppu.WriteReg(addr & 7, value); + } + else if (addr < 0x4020) + { + WriteReg(addr, value); //we're not rebasing the register just to keep register names canonical + } + else if (addr < 0x6000) + { + board.WriteEXP(addr - 0x4000, value); + } + else if (addr < 0x8000) + { + board.WriteWRAM(addr - 0x6000, value); + } + else + { + board.WritePRG(addr - 0x8000, value); + } } }