marble: The slapstic seems to trigger on more than the banking zone.

This commit is contained in:
Olivier Galibert 2020-12-12 11:00:36 +01:00
parent 98752caae1
commit ccb85b19f9
2 changed files with 12 additions and 3 deletions

View File

@ -2491,6 +2491,11 @@ void atarisy1_state::init_slapstic()
m_maincpu->space(AS_PROGRAM).install_readwrite_tap(0x80000, 0x87fff, 0, "slapstic",
[this](offs_t offset, u16 &data, u16 mem_mask) { m_slapstic->tweak(offset >> 1); },
[this](offs_t offset, u16 &data, u16 mem_mask) { m_slapstic->tweak(offset >> 1); });
// The slaptic seems to trigger on the whole rom, but that slows things down too much. limit to the range marble madness actually needs
m_maincpu->space(AS_PROGRAM).install_readwrite_tap(0x2ff5a, 0x2ff5b, 0, "slapstic",
[this](offs_t offset, u16 &data, u16 mem_mask) { logerror("!! %x\n", offset); m_slapstic->tweak(offset >> 1); },
[this](offs_t offset, u16 &data, u16 mem_mask) { m_slapstic->tweak(offset >> 1); });
}
void atarisy1_state::init_marble()

View File

@ -867,11 +867,16 @@ int atari_slapstic_device::tweak(offs_t offset)
break;
/* ALTERNATE1 state: look for alternate2 offset, or else fall back to ENABLED */
/* Can also go to ADDITIVE1. Not a hack, it's real. */
case ALTERNATE1:
if (MATCHES_MASK_VALUE(offset, slapstic.alt2))
{
state = ALTERNATE2;
}
else if (MATCHES_MASK_VALUE(offset, slapstic.add1))
{
state = ADDITIVE1;
}
else
{
state = ENABLED;
@ -994,10 +999,9 @@ int atari_slapstic_device::tweak(offs_t offset)
}
break;
/* ADDITIVE3 state: waiting for a bank to seal the deal */
/* ADDITIVE3 state: waiting for the commit, which is common with alt, but can be delayed */
case ADDITIVE3:
if (offset == slapstic.bank[0] || offset == slapstic.bank[1] ||
offset == slapstic.bank[2] || offset == slapstic.bank[3])
if (MATCHES_MASK_VALUE(offset, slapstic.alt4))
{
state = DISABLED;
current_bank = add_bank;