mac: Fix interactions between mirror and range [O. Galibert]

This commit is contained in:
Olivier Galibert 2016-06-22 11:17:46 +02:00
parent c8993e81b3
commit b01de991f1

View File

@ -155,16 +155,16 @@ void mac_state::mac_install_memory(offs_t memory_begin, offs_t memory_end,
offs_t memory_mirror; offs_t memory_mirror;
memory_size = MIN(memory_size, (memory_end + 1 - memory_begin)); memory_size = MIN(memory_size, (memory_end + 1 - memory_begin));
memory_mirror = (memory_end - memory_begin) ^ (memory_size - 1); memory_mirror = (memory_end - memory_begin) & ~(memory_size - 1);
if (!is_rom) if (!is_rom)
{ {
space.install_readwrite_bank(memory_begin, memory_end, memory_mirror, bank); space.install_readwrite_bank(memory_begin, memory_end & ~memory_mirror, memory_mirror, bank);
} }
else else
{ {
space.unmap_write(memory_begin, memory_end); space.unmap_write(memory_begin, memory_end);
space.install_read_bank(memory_begin, memory_end, memory_mirror, bank); space.install_read_bank(memory_begin, memory_end & ~memory_mirror, memory_mirror, bank);
} }
membank(bank)->set_base(memory_data); membank(bank)->set_base(memory_data);
@ -471,7 +471,7 @@ void mac_state::set_memory_overlay(int overlay)
else else
{ {
size_t rom_mirror = 0xfffffff ^ (memregion("bootrom")->bytes() - 1); size_t rom_mirror = 0xfffffff ^ (memregion("bootrom")->bytes() - 1);
m_maincpu->space(AS_PROGRAM).install_read_bank(0x40000000, 0x4fffffff, rom_mirror, "bankR"); m_maincpu->space(AS_PROGRAM).install_read_bank(0x40000000, 0x4fffffff & ~rom_mirror, rom_mirror, "bankR");
membank("bankR")->set_base((void *)memregion("bootrom")->base()); membank("bankR")->set_base((void *)memregion("bootrom")->base());
} }
} }