hmcs40: fix possible issue with irq/lpu (nw)

This commit is contained in:
hap 2017-05-12 22:33:29 +02:00
parent baa7178053
commit 1cd85518e3
3 changed files with 3 additions and 3 deletions

View File

@ -578,7 +578,7 @@ void hmcs40_cpu_device::execute_run()
while (m_icount > 0)
{
// LPU is handled 1 cycle later
if ((m_prev_op & 0x3e0) == 0x340)
if ((m_prev_op & 0x7e0) == 0x340)
m_pc = ((m_page << 6) | (m_pc & 0x3f)) & m_pcmask;
// remember previous state

View File

@ -465,7 +465,7 @@ void hmcs40_cpu_device::op_lpu()
if (m_s)
m_page = m_op & 0x1f;
else
m_op = 0; // fake nop
m_op |= 0x400; // indicate unhandled LPU
}
void hmcs40_cpu_device::op_tbr()

View File

@ -75,7 +75,7 @@
- gckong random lockups (tap the jump button repeatedly): mcu stack overflow,
works ok if stack levels is increased, 38800 B rev. has more stack levels?
Or it could be a race condition: irq happening too late/early.
- epacman booting the game in demo mode, pacman should go straight to the
- epacman2 booting the game in demo mode, pacman should go straight to the
upper-left power pill: mcu cycle/interrupt timing related
- Though very uncommon when compared to games with LED/lamp display, some
games may manipulate VFD plate brightness by strobing it longer/shorter,