(MESS) megadriv.c: Attempt to properly emulate protection in Sould Edge vs Samurai Spirits. nw.

Also fixed the slot option for nflqb96.
This commit is contained in:
Fabio Priuli 2013-03-24 17:10:43 +00:00
parent f97a9fe6bd
commit bee34ea13e
2 changed files with 8 additions and 7 deletions

View File

@ -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)

View File

@ -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)];
}