From ed908b8fcce3f0e9bd02bf981f2b046b3ca3b2e6 Mon Sep 17 00:00:00 2001 From: hap Date: Wed, 17 Jun 2015 23:08:09 +0200 Subject: [PATCH] fix skip on la/lxy --- src/emu/cpu/melps4/melps4.c | 3 +++ src/emu/cpu/melps4/melps4op.inc | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/emu/cpu/melps4/melps4.c b/src/emu/cpu/melps4/melps4.c index 686b49d396a..5b58d73bb55 100644 --- a/src/emu/cpu/melps4/melps4.c +++ b/src/emu/cpu/melps4/melps4.c @@ -431,7 +431,10 @@ void melps4_cpu_device::execute_run() { // if it's a long jump, skip next one as well if (m_op != m_ba_op && (m_op & ~0xf) != m_sp_mask) + { m_skip = false; + m_op = 0; // fake nop + } } else execute_one(); diff --git a/src/emu/cpu/melps4/melps4op.inc b/src/emu/cpu/melps4/melps4op.inc index 4d57c075905..382ecb1489b 100644 --- a/src/emu/cpu/melps4/melps4op.inc +++ b/src/emu/cpu/melps4/melps4op.inc @@ -176,14 +176,14 @@ void melps4_cpu_device::op_xam() void melps4_cpu_device::op_xamd() { - // XAMD j: XAM J, DEY + // XAMD j: XAM j, DEY op_xam(); op_dey(); } void melps4_cpu_device::op_xami() { - // XAMI j: XAM J, skip next on Y mask(default 0xf), increment Y + // XAMI j: XAM j, skip next on Y mask(default 0xf), increment Y op_xam(); m_skip = ((m_y & m_xami_mask) == m_xami_mask); m_y = (m_y + 1) & 0xf;