Atari - Mapper E7 - small fix, the games still don't work but it may or may not be this mapper, need to look into it more

This commit is contained in:
adelikat 2012-10-15 14:29:13 +00:00
parent 6925df2154
commit f7c6659b76
1 changed files with 30 additions and 8 deletions

View File

@ -53,18 +53,40 @@ namespace BizHawk.Emulation.Consoles.Atari._2600
return core.rom[toggle * 2 * 1024 + (addr & 0x7FF)]; return core.rom[toggle * 2 * 1024 + (addr & 0x7FF)];
} }
} }
else if (addr < 0x1800) return core.rom[toggle * 2 * 1024 + (addr & 0x7FF)]; else if (addr < 0x1800)
else if (addr < 0x1A00) return rambank1[toggle * 256 + (addr & 0x255)]; {
else if (addr < 0x2000) return core.rom[toggle * 2 * 1024 + (addr & 0x7FF)];
return core.rom[14848 + (addr & 0x5FF)]; //Fixed to last 1.5K }
else return base.ReadMemory(addr); else if (addr < 0x1A00)
{
return rambank1[toggle * 256 + (addr & 0x255)];
}
else if (addr < 0x2000)
{
addr -= 0x1A00;
addr &= 0x5FF;
return core.rom[14848 + addr]; //Fixed to last 1.5K
}
else
{
return base.ReadMemory(addr);
}
} }
public override void WriteMemory(ushort addr, byte value) public override void WriteMemory(ushort addr, byte value)
{ {
Address(addr); Address(addr);
if (addr < 0x1000) base.WriteMemory(addr, value); if (addr < 0x1000)
else if (addr < 0x1400) rambank0[addr & 0x3FF] = value; {
else if (addr >= 0x1800 && addr < 0x2000) rambank0[(addr & 0xFF) + (rambank1_toggle * 0x100)] = value; base.WriteMemory(addr, value);
}
else if (addr < 0x1400)
{
rambank0[addr & 0x3FF] = value;
}
else if (addr >= 0x1800 && addr < 0x2000)
{
rambank0[(addr & 0xFF) + (rambank1_toggle * 0x100)] = value;
}
} }
public override void SyncState(Serializer ser) public override void SyncState(Serializer ser)