From 8ab3ccb194ff9cb37bda434489a82da854b24af6 Mon Sep 17 00:00:00 2001 From: Fabio Priuli Date: Wed, 14 May 2014 16:47:03 +0000 Subject: fix for mt5508 + mask direct accesses to vrom (better safe than sorry). nw. --- src/emu/bus/nes/mmc5.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/emu/bus/nes/mmc5.c b/src/emu/bus/nes/mmc5.c index c3aa9beeed7..d4d485dcf86 100644 --- a/src/emu/bus/nes/mmc5.c +++ b/src/emu/bus/nes/mmc5.c @@ -118,7 +118,9 @@ void nes_exrom_device::pcb_reset() m_ex1_bank = 0; m_vcount = 0; - memset(m_vrom_bank, 0x3ff, ARRAY_LENGTH(m_vrom_bank)); + for (int i = 0; i < 12; i++) + m_vrom_bank[i] = 0x3ff; + m_prg_regs[0] = 0xfc; m_prg_regs[1] = 0xfd; m_prg_regs[2] = 0xfe; @@ -391,19 +393,19 @@ inline UINT8 nes_exrom_device::base_chr_r(int bank, UINT32 offset) break; } - return m_vrom[helper]; + return m_vrom[helper & (m_vrom.bytes() - 1)]; } inline UINT8 nes_exrom_device::split_chr_r(UINT32 offset) { UINT32 helper = (m_split_bank * 0x1000) + (offset & 0x3f8) + (m_split_yst & 7); - return m_vrom[helper]; + return m_vrom[helper & (m_vrom.bytes() - 1)]; } inline UINT8 nes_exrom_device::bg_ex1_chr_r(UINT32 offset) { UINT32 helper = (m_ex1_bank * 0x1000) + (offset & 0xfff); - return m_vrom[helper]; + return m_vrom[helper & (m_vrom.bytes() - 1)]; } READ8_MEMBER(nes_exrom_device::chr_r) -- cgit v1.2.3