From 90a288afebe6646aa97de0419783a624b289692c Mon Sep 17 00:00:00 2001 From: adelikat Date: Fri, 19 Oct 2012 23:31:42 +0000 Subject: [PATCH] Implement X07 mapper --- .../Consoles/Atari/2600/Mappers/mX07.cs | 44 +++++++++++++++++++ .../output/gamedb/gamedb_a2600.txt | 3 +- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mX07.cs b/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mX07.cs index c88dd38ffa..5ca578d2fe 100644 --- a/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mX07.cs +++ b/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mX07.cs @@ -38,6 +38,50 @@ namespace BizHawk.Emulation.Consoles.Atari._2600 class mX07 : MapperBase { + int rombank_2k = 0; + public override byte ReadMemory(ushort addr) + { + Address(addr); + if (addr < 0x1000) + { + return base.ReadMemory(addr); + } + else + { + return core.rom[(rombank_2k << 12) + (addr & 0xFFF)]; + } + } + public override void WriteMemory(ushort addr, byte value) + { + Address(addr); + if (addr < 0x1000) base.WriteMemory(addr, value); + } + + public override void SyncState(Serializer ser) + { + base.SyncState(ser); + ser.Sync("rombank_2k", ref rombank_2k); + } + + void Address(ushort addr) + { + if ((addr & 0x180F) == 0x080D) + { + bank((addr & 0xF0) >> 4); + } + else if ((addr & 0x1880) == 0) + { + if ((rombank_2k & 0xE) == 0xE) + { + bank(((addr & 0x40) >> 6) | (rombank_2k & 0xE)); + } + } + } + + private void bank(int bank) + { + rombank_2k = (bank & 0x0F); + } } } diff --git a/BizHawk.MultiClient/output/gamedb/gamedb_a2600.txt b/BizHawk.MultiClient/output/gamedb/gamedb_a2600.txt index 51cf26c923..cdf98252e4 100644 --- a/BizHawk.MultiClient/output/gamedb/gamedb_a2600.txt +++ b/BizHawk.MultiClient/output/gamedb/gamedb_a2600.txt @@ -2689,4 +2689,5 @@ sha1:feb6bd37e5d722bd080433587972b980afff5fa5 Zoo Fun (HomeVision) A26 m=4K sha1:e9cbd1348c7c2e6f7a1ed174554fc144f291debc Ko Avgn - Ntsc - 2009-08-16 A26 m=F4 sha1:080deaf5fe7c0e3b132365bfe9e8003becf3498d Ko Avgn - Ntsc - 2009-08-16 A26 m=F4 sha1:63C12146C183BCCBF05C0044A961DC40790E3212 Pleiades (1983) (UA Limited) (Prototype) A26 m=UA -sha1:86BBE6E62DACF6E5CD771BD9249C4ED51BF60092 dungeon_rc4 A26 m=F4 \ No newline at end of file +sha1:86BBE6E62DACF6E5CD771BD9249C4ED51BF60092 dungeon_rc4 A26 m=F4 +sha1:C11F59AE0ECD376AF52AE57B5BE8B6F039DE0D0E MegaBoy (X07 Bankswitching Conversion) (2008) (Fred Quimby) A26 m=X07 \ No newline at end of file