diff --git a/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mE0.cs b/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mE0.cs index 099a7a3449..7c983d4a31 100644 --- a/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mE0.cs +++ b/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mE0.cs @@ -10,7 +10,6 @@ namespace BizHawk.Emulation.Consoles.Atari._2600 int toggle1 = 0; int toggle2 = 0; int toggle3 = 0; - int toggle4 = 0; public override byte ReadMemory(ushort addr) { @@ -34,7 +33,6 @@ namespace BizHawk.Emulation.Consoles.Atari._2600 ser.Sync("toggle1", ref toggle1); ser.Sync("toggle2", ref toggle2); ser.Sync("toggle3", ref toggle3); - ser.Sync("toggle4", ref toggle4); } void Address(ushort addr) @@ -67,53 +65,53 @@ namespace BizHawk.Emulation.Consoles.Atari._2600 break; case 0x1FE8: - toggle1 = 0; + toggle2 = 0; break; case 0x1FE9: - toggle1 = 1; + toggle2 = 1; break; case 0x1FEA: - toggle1 = 2; + toggle2 = 2; break; case 0x1FEB: - toggle1 = 3; + toggle2 = 3; break; case 0x1FEC: - toggle1 = 4; + toggle2 = 4; break; case 0x1FED: - toggle1 = 5; + toggle2 = 5; break; case 0x1FEE: - toggle1 = 6; + toggle2 = 6; break; case 0x1FEF: - toggle1 = 7; + toggle2 = 7; break; case 0x1FF0: - toggle1 = 0; + toggle3 = 0; break; case 0x1FF1: - toggle1 = 1; + toggle3 = 1; break; case 0x1FF2: - toggle1 = 2; + toggle3 = 2; break; case 0x1FF3: - toggle1 = 3; + toggle3 = 3; break; case 0x1FF4: - toggle1 = 4; + toggle3 = 4; break; case 0x1FF5: - toggle1 = 5; + toggle3 = 5; break; case 0x1FF6: - toggle1 = 6; + toggle3 = 6; break; case 0x1FF7: - toggle1 = 7; + toggle3 = 7; break; } } diff --git a/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mFA.cs b/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mFA.cs index a9a2805a5c..3ac83d5b9a 100644 --- a/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mFA.cs +++ b/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mFA.cs @@ -16,9 +16,11 @@ namespace BizHawk.Emulation.Consoles.Atari._2600 accessing 1FF8, 1FF9, and 1FFA. There's also 256 bytes of RAM mapped into 1000-11FF. The write port is at 1000-10FF, and the read port is 1100-11FF. */ + class mFA : MapperBase { int toggle = 0; + ByteBuffer aux_ram = new ByteBuffer(256); public override byte ReadMemory(ushort addr) { @@ -26,23 +28,27 @@ namespace BizHawk.Emulation.Consoles.Atari._2600 if (addr < 0x1000) return base.ReadMemory(addr); - else if (addr < 0x10FF) + else if (addr < 0x1100) return 0xFF; - else if (addr < 0x11FF) - return core.BaseReadMemory(addr); + else if (addr < 0x1200) + return aux_ram[addr & 0xFF]; else - return core.rom[toggle * 4 * 1024 + (addr & 0xFFF)]; + return core.rom[(toggle * 4 * 1024) + (addr & 0xFFF)]; } public override void WriteMemory(ushort addr, byte value) { Address(addr); - if (addr < 0x1000) base.WriteMemory(addr, value); + if (addr < 0x1000) + base.WriteMemory(addr, value); + if (addr < 0x10FF) + aux_ram[addr & 0xFF] = value; } public override void SyncState(Serializer ser) { base.SyncState(ser); ser.Sync("toggle", ref toggle); + ser.Sync("ram", ref aux_ram); } void Address(ushort addr)