NES - small (probably unnoticeable) speedup to WriteMemory()

This commit is contained in:
adelikat 2012-08-19 21:09:48 +00:00
parent 6473321100
commit 959e56b71a
1 changed files with 28 additions and 9 deletions

View File

@ -286,15 +286,34 @@ namespace BizHawk.Emulation.Consoles.Nintendo
public void WriteMemory(ushort addr, byte value) public void WriteMemory(ushort addr, byte value)
{ {
if (addr < 0x0800) ram[addr] = value; if (addr < 0x0800)
else if (addr < 0x1000) ram[addr - 0x0800] = value; {
else if (addr < 0x1800) ram[addr - 0x1000] = value; ram[addr] = value;
else if (addr < 0x2000) ram[addr - 0x1800] = value; }
else if (addr < 0x4000) ppu.WriteReg(addr & 7, value); else if (addr < 0x2000)
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); ram[addr & 0x7FF] = value;
else if (addr < 0x8000) board.WriteWRAM(addr - 0x6000, value); }
else board.WritePRG(addr - 0x8000, 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);
}
} }
} }