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)];
}
}
else if (addr < 0x1800) return core.rom[toggle * 2 * 1024 + (addr & 0x7FF)];
else if (addr < 0x1A00) return rambank1[toggle * 256 + (addr & 0x255)];
else if (addr < 0x2000)
return core.rom[14848 + (addr & 0x5FF)]; //Fixed to last 1.5K
else return base.ReadMemory(addr);
else if (addr < 0x1800)
{
return core.rom[toggle * 2 * 1024 + (addr & 0x7FF)];
}
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)
{
Address(addr);
if (addr < 0x1000) 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;
if (addr < 0x1000)
{
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)