diff --git a/src/mess/drivers/megadriv.c b/src/mess/drivers/megadriv.c index 597bbd60dcc..42f1f494974 100644 --- a/src/mess/drivers/megadriv.c +++ b/src/mess/drivers/megadriv.c @@ -362,7 +362,7 @@ static SLOT_INTERFACE_START(md_cart) SLOT_INTERFACE_INTERNAL("rom_eeprom", MD_STD_EEPROM) SLOT_INTERFACE_INTERNAL("rom_nbajam", MD_EEPROM_NBAJAM) SLOT_INTERFACE_INTERNAL("rom_nbajamte", MD_EEPROM_NBAJAMTE) - SLOT_INTERFACE_INTERNAL("rom_nflqb", MD_EEPROM_NFLQB) + SLOT_INTERFACE_INTERNAL("rom_nflqb96", MD_EEPROM_NFLQB) SLOT_INTERFACE_INTERNAL("rom_cslam", MD_EEPROM_CSLAM) SLOT_INTERFACE_INTERNAL("rom_nhlpa", MD_EEPROM_NHLPA) SLOT_INTERFACE_INTERNAL("rom_blara", MD_EEPROM_BLARA) diff --git a/src/mess/machine/md_rom.c b/src/mess/machine/md_rom.c index fcee9a946d5..6ca71d085b4 100644 --- a/src/mess/machine/md_rom.c +++ b/src/mess/machine/md_rom.c @@ -733,13 +733,12 @@ WRITE16_MEMBER(md_rom_lion2_device::write) LION KING 3 -------------------------------------------------*/ -// TODO: Sould Edge vs Samurai Spirits uses this same mechanism (or a very similar one) -// but expects to bankswitch more than the first 32k chunk... +#define MD_LION3_ADDR(a) (((offset << 1) | (m_bank << 15)) & (m_rom_size - 1))/2 READ16_MEMBER(md_rom_lion3_device::read) { - if (offset < 0x8000/2) - return m_rom[offset + (m_bank * 0x8000)/2]; + if (offset < 0x100000/2) + return m_rom[MD_LION3_ADDR(offset)]; else if (offset >= 0x600000/2 && offset < 0x700000/2) { switch (offset & 0x7) @@ -847,10 +846,12 @@ READ16_MEMBER(md_rom_soulb_device::read) POKEMON STADIUM / KAIJU -------------------------------------------------*/ +#define MD_POKESTAD_ADDR(a) (((offset << 1) | (m_bank << 15)) & (m_rom_size - 1))/2 + READ16_MEMBER(md_rom_pokestad_device::read) { - if (offset < 0x8000/2) - return m_rom[offset + (m_bank * 0x8000)/2]; + if (offset < 0x100000/2) + return m_rom[MD_POKESTAD_ADDR(offset)]; return m_rom[MD_ADDR(offset)]; }