From 79f85a600a5d35b8195c6d418e5842d515e00c3a Mon Sep 17 00:00:00 2001 From: mamehaze <140764005+mamehaze@users.noreply.github.com> Date: Fri, 20 Sep 2024 18:26:31 +0100 Subject: cpu/xa: Implemented add with indexed addressing mode for source. (#12795) Used by the tripfevb microcontroller program. The game no longer causes a fatal error, but hangs instead. --- src/devices/cpu/xa/xa_ops.cpp | 2 +- src/mame/igs/igs_m027xa.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/devices/cpu/xa/xa_ops.cpp b/src/devices/cpu/xa/xa_ops.cpp index ae803581380..c66277ba6c4 100644 --- a/src/devices/cpu/xa/xa_ops.cpp +++ b/src/devices/cpu/xa/xa_ops.cpp @@ -1123,7 +1123,7 @@ void xa_cpu::aluop_byte_rd_rsoff8(int alu_op, u8 rd, u8 rs, u8 offset8) } } -void xa_cpu::add_word_rd_rsoff8(u8 rd, u8 rs, u8 offset8) { fatalerror("ADD.w %s, [%s+#$%02x]", m_regnames16[rd], m_regnames16[rs], offset8);} +void xa_cpu::add_word_rd_rsoff8(u8 rd, u8 rs, u8 offset8) { u16 rdval = gr16(rd); u16 fulloffset = util::sext(offset8, 8); u16 address = get_addr(rs) + fulloffset; u16 val = rdat16(address); u16 result = do_add_16(rdval, val); sr16(rd, result); cy(6); } void xa_cpu::addc_word_rd_rsoff8(u8 rd, u8 rs, u8 offset8){ fatalerror("ADDC.w %s, [%s+#$%02x]", m_regnames16[rd], m_regnames16[rs], offset8);} void xa_cpu::sub_word_rd_rsoff8(u8 rd, u8 rs, u8 offset8) { fatalerror("SUB.w %s, [%s+#$%02x]", m_regnames16[rd], m_regnames16[rs], offset8);} void xa_cpu::subb_word_rd_rsoff8(u8 rd, u8 rs, u8 offset8){ fatalerror("SUBB.w %s, [%s+#$%02x]", m_regnames16[rd], m_regnames16[rs], offset8);} diff --git a/src/mame/igs/igs_m027xa.cpp b/src/mame/igs/igs_m027xa.cpp index aad61fb20af..5b01be7adcf 100644 --- a/src/mame/igs/igs_m027xa.cpp +++ b/src/mame/igs/igs_m027xa.cpp @@ -6,8 +6,8 @@ IGS ARM7 (IGS027A) based Mahjong / Gambling platform(s) with XA sub-cpu These games use the IGS027A processor. -Triple Fever (V105US) (tripfevb) causes MAME to exit with -"Fatal error: ADD.w R0, [R7+#$02]" after paying out tickets. +Triple Fever (V105US) (tripfevb) hangs after paying out tickets, with the MCU +apparently attempting serial communication with something. */ -- cgit v1.2.3