From bedd3cb83b14d6313ee3f383d7de28be8af7bcf5 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Wed, 24 Sep 2014 22:18:52 +0000 Subject: [PATCH] more reduction (nw) --- src/mame/machine/raiden2cop.c | 23 ++++++++--------------- src/mame/machine/raiden2cop.h | 2 +- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/mame/machine/raiden2cop.c b/src/mame/machine/raiden2cop.c index cf0509d0754..48640c5702d 100644 --- a/src/mame/machine/raiden2cop.c +++ b/src/mame/machine/raiden2cop.c @@ -184,6 +184,12 @@ UINT8 raiden2cop_device::cop_read_byte(address_space &space, int address) else return space.read_byte(address); } +void raiden2cop_device::cop_write_word(address_space &space, int address, UINT16 data) +{ + if (m_cpu_is_68k) space.write_word(address ^ 2, data); + else space.write_word(address, data); +} + /*** Command Table uploads ***/ @@ -768,20 +774,7 @@ void raiden2cop_device::execute_0205(address_space &space, int offset, UINT16 da int npos = ppos + space.read_dword(cop_regs[0] + 0x10 + offset * 4); int delta = (npos >> 16) - (ppos >> 16); space.write_dword(cop_regs[0] + 4 + offset * 4, npos); - space.write_word(cop_regs[0] + 0x1e + offset * 4, space.read_word(cop_regs[0] + 0x1e + offset * 4) + delta); -} - -void raiden2cop_device::LEGACY_execute_0205(address_space &space, int offset, UINT16 data) -{ - UINT8 offs; - - offs = (offset & 3) * 4; - int ppos = space.read_dword(cop_regs[0] + 4 + offs); - int npos = ppos + space.read_dword(cop_regs[0] + 0x10 + offs); - int delta = (npos >> 16) - (ppos >> 16); - - space.write_dword(cop_regs[0] + 4 + offs, npos); - space.write_word(cop_regs[0] + 0x1c + offs, space.read_word(cop_regs[0] + 0x1c + offs) + delta); + cop_write_word(space,cop_regs[0] + 0x1e + offset * 4, cop_read_word(space, cop_regs[0] + 0x1e + offset * 4) + delta); } /* @@ -1989,7 +1982,7 @@ WRITE16_MEMBER(raiden2cop_device::LEGACY_cop_cmd_w) if (check_command_matches(command, 0x188, 0x282, 0x082, 0xb8e, 0x98e, 0x000, 0x000, 0x000, 6, 0xffeb)) { executed = 1; - LEGACY_execute_0205(space, offset, data); + execute_0205(space, offset, data); return; } diff --git a/src/mame/machine/raiden2cop.h b/src/mame/machine/raiden2cop.h index 1ec3031782f..c374f4a277c 100644 --- a/src/mame/machine/raiden2cop.h +++ b/src/mame/machine/raiden2cop.h @@ -177,7 +177,6 @@ public: void LEGACY_execute_b100(address_space &space, int offset, UINT16 data); void LEGACY_execute_a900(address_space &space, int offset, UINT16 data); void LEGACY_execute_b900(address_space &space, int offset, UINT16 data); - void LEGACY_execute_0205(address_space &space, int offset, UINT16 data); void LEGACY_execute_42c2(address_space &space, int offset, UINT16 data); void LEGACY_execute_e30e(address_space &space, int offset, UINT16 data); void LEGACY_execute_6200(address_space &space, int offset, UINT16 data); @@ -259,6 +258,7 @@ public: static void set_cpu_is_68k(device_t &device, int value) { downcast(device).m_cpu_is_68k = value; } UINT16 cop_read_word(address_space &space, int address); UINT8 cop_read_byte(address_space &space, int address); + void cop_write_word(address_space &space, int address, UINT16 data); // DEBUG void dump_table();