diff options
author | mooglyguy <therealmogminer@gmail.com> | 2017-11-14 21:28:07 +0100 |
---|---|---|
committer | mooglyguy <therealmogminer@gmail.com> | 2017-11-14 21:28:21 +0100 |
commit | 6387bfd6b070ba5ed44da698d695e50260ff620d (patch) | |
tree | b4c86931eb6defcbc5df9ba2241676e36a859a33 | |
parent | 56e8f3bd0a001e44dd2935a34b666056b1312241 (diff) |
e132xs, fixed ldxx2 local,local case
-rw-r--r-- | src/devices/cpu/e132xs/e132xsop.hxx | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/devices/cpu/e132xs/e132xsop.hxx b/src/devices/cpu/e132xs/e132xsop.hxx index 827a0e1a7b1..5a8325ee371 100644 --- a/src/devices/cpu/e132xs/e132xsop.hxx +++ b/src/devices/cpu/e132xs/e132xsop.hxx @@ -3131,12 +3131,14 @@ void hyperstone_device::hyperstone_ldxx2_local_local() { case 0: // LDBS.N m_local_regs[src_code] = (int32_t)(int8_t)READ_B(dreg); - m_local_regs[dst_code] += extra_s; + if(src_code != dst_code) + m_local_regs[dst_code] += extra_s; break; case 1: // LDBU.N m_local_regs[src_code] = READ_B(dreg); - m_local_regs[dst_code] += extra_s; + if(src_code != dst_code) + m_local_regs[dst_code] += extra_s; break; case 2: @@ -3144,7 +3146,8 @@ void hyperstone_device::hyperstone_ldxx2_local_local() m_local_regs[src_code] = (int32_t)(int16_t)READ_HW(dreg); else // LDHU.N m_local_regs[src_code] = READ_HW(dreg); - m_local_regs[dst_code] += extra_s & ~1; + if(src_code != dst_code) + m_local_regs[dst_code] += extra_s & ~1; break; case 3: @@ -3152,12 +3155,14 @@ void hyperstone_device::hyperstone_ldxx2_local_local() { case 0: // LDW.N m_local_regs[src_code] = READ_W(dreg); - m_local_regs[dst_code] += extra_s & ~1; + if(src_code != dst_code) + m_local_regs[dst_code] += extra_s & ~1; break; case 1: // LDD.N m_local_regs[src_code] = READ_W(dreg); m_local_regs[srcf_code] = READ_W(dreg + 4); - m_local_regs[dst_code] += extra_s & ~1; + if(src_code != dst_code) + m_local_regs[dst_code] += extra_s & ~1; m_icount -= m_clock_cycles_1; // extra cycle break; case 2: // Reserved @@ -3168,7 +3173,8 @@ void hyperstone_device::hyperstone_ldxx2_local_local() m_local_regs[src_code] = READ_W(dreg); else m_local_regs[src_code] = m_local_regs[(dreg & 0xfc) >> 2]; - m_local_regs[dst_code] += extra_s & ~3; + if(src_code != dst_code) + m_local_regs[dst_code] += extra_s & ~3; m_icount -= m_clock_cycles_2; // extra cycles break; } |