Fixed a long standing bug in tempest by specifying quantum perfect emulation. All save states should be removed since they may contain a corrupted game state. [Couriersud]

Additional notes:

Actually, the routine at AE1C is called after high score entry resp. after the high score screen was displayed. It has something like

lda 60ca
ldy 60ca

and expects the high nibble of "A" to match the low level of "Y", i.e. that 4 shifts occur.
This commit is contained in:
Couriersud 2014-03-31 22:35:41 +00:00
parent 4604ac8b0b
commit f4c038f9ce
2 changed files with 4 additions and 2 deletions

View File

@ -864,13 +864,11 @@ UINT8 pokey_device::read(offs_t offset)
if( m_AUDCTL & POLY9 )
{
data = m_poly9[m_p9] & 0xff;
synchronize(SYNC_NOOP); /* force resync */
LOG_RAND(("POKEY '%s' rand9[$%05x]: $%02x\n", tag(), m_p9, data));
}
else
{
data = (m_poly17[m_p17] >> 8) & 0xff;
synchronize(SYNC_NOOP); /* force resync */
LOG_RAND(("POKEY '%s' rand17[$%05x]: $%02x\n", tag(), m_p17, data));
}
break;

View File

@ -595,6 +595,10 @@ static MACHINE_CONFIG_START( tempest, tempest_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK / 8)
MCFG_CPU_PROGRAM_MAP(main_map)
/* needed to ensure routine at ae1c passes checks and does not corrupt data */
MCFG_QUANTUM_PERFECT_CPU("maincpu")
MCFG_CPU_PERIODIC_INT_DRIVER(tempest_state, irq0_line_assert, (double)MASTER_CLOCK / 4096 / 12)
MCFG_WATCHDOG_TIME_INIT(attotime::from_hz(CLOCK_3KHZ / 256))