Implement X07 mapper
This commit is contained in:
parent
162932797b
commit
90a288afeb
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
sha1:86BBE6E62DACF6E5CD771BD9249C4ED51BF60092 dungeon_rc4 A26 m=F4
|
||||
sha1:C11F59AE0ECD376AF52AE57B5BE8B6F039DE0D0E MegaBoy (X07 Bankswitching Conversion) (2008) (Fred Quimby) A26 m=X07
|
Loading…
Reference in New Issue