From 1cd85518e3b07a0146d5e10dda7bbb5e3a66bd30 Mon Sep 17 00:00:00 2001 From: hap Date: Fri, 12 May 2017 22:33:29 +0200 Subject: [PATCH] hmcs40: fix possible issue with irq/lpu (nw) --- src/devices/cpu/hmcs40/hmcs40.cpp | 2 +- src/devices/cpu/hmcs40/hmcs40op.cpp | 2 +- src/mame/drivers/hh_hmcs40.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/devices/cpu/hmcs40/hmcs40.cpp b/src/devices/cpu/hmcs40/hmcs40.cpp index 71b038bcd1b..a14b947820a 100644 --- a/src/devices/cpu/hmcs40/hmcs40.cpp +++ b/src/devices/cpu/hmcs40/hmcs40.cpp @@ -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 diff --git a/src/devices/cpu/hmcs40/hmcs40op.cpp b/src/devices/cpu/hmcs40/hmcs40op.cpp index e554ec8ac45..2c28d4cb54e 100644 --- a/src/devices/cpu/hmcs40/hmcs40op.cpp +++ b/src/devices/cpu/hmcs40/hmcs40op.cpp @@ -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() diff --git a/src/mame/drivers/hh_hmcs40.cpp b/src/mame/drivers/hh_hmcs40.cpp index aa48d381bc1..eb57472b7ff 100644 --- a/src/mame/drivers/hh_hmcs40.cpp +++ b/src/mame/drivers/hh_hmcs40.cpp @@ -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,