diff --git a/src/mame/machine/raiden2cop.c b/src/mame/machine/raiden2cop.c index 48640c5702d..fbe42d62aee 100644 --- a/src/mame/machine/raiden2cop.c +++ b/src/mame/machine/raiden2cop.c @@ -1280,17 +1280,13 @@ void raiden2cop_device::execute_8900(address_space &space, int offset, UINT16 da 14 - a180 (a100 ) : (b80, b82, b84, b86, 000, 000, 000, 000) 0 02ff (grainbow) 14 - a100 (a100 ) : (b80, b82, b84, b86, 000, 000, 000, 000) 0 00ff (raiden2, raidendx) */ + +// the last value (ffff / 02ff / 00ff depending on game) might be important here as they've been intentionally changed for the different games void raiden2cop_device::execute_a100(address_space &space, int offset, UINT16 data) { cop_collision_read_pos(space, 0, cop_regs[0], data & 0x0080); } -void raiden2cop_device::LEGACY_execute_a100(address_space &space, int offset, UINT16 data) -{ - m_LEGACY_cop_collision_info[0].y = (space.read_dword(cop_regs[0] + 4)); - m_LEGACY_cop_collision_info[0].x = (space.read_dword(cop_regs[0] + 8)); -} - /* 15 - a900 (a900 ) : (ba0, ba2, ba4, ba6, 000, 000, 000, 000) f ffff (heatbrl, zeroteam, xsedae) 15 - a980 (a900 ) : (ba0, ba2, ba4, ba6, 000, 000, 000, 000) f ffff (legionna, cupsoc, godzilla, denjinmk) @@ -1302,11 +1298,6 @@ void raiden2cop_device::execute_a900(address_space &space, int offset, UINT16 da cop_collision_read_pos(space, 1, cop_regs[1], data & 0x0080); } -void raiden2cop_device::LEGACY_execute_a900(address_space &space, int offset, UINT16 data) -{ - m_LEGACY_cop_collision_info[1].y = (space.read_dword(cop_regs[1] + 4)); - m_LEGACY_cop_collision_info[1].x = (space.read_dword(cop_regs[1] + 8)); -} /* 16 - b080 (b000 ) : (b40, bc0, bc2, 000, 000, 000, 000, 000) 9 ffff (heatbrl) @@ -1526,10 +1517,10 @@ WRITE16_MEMBER( raiden2cop_device::cop_hitbox_baseadr_w) void raiden2cop_device::cop_collision_read_pos(address_space &space, int slot, UINT32 spradr, bool allow_swap) { cop_collision_info[slot].allow_swap = allow_swap; - cop_collision_info[slot].flags_swap = space.read_word(spradr+2); + cop_collision_info[slot].flags_swap = cop_read_word(space, spradr+2); cop_collision_info[slot].spradr = spradr; for(int i=0; i<3; i++) - cop_collision_info[slot].pos[i] = space.read_word(spradr+6+4*i); + cop_collision_info[slot].pos[i] = cop_read_word(space, spradr+6+4*i); } void raiden2cop_device::cop_collision_update_hitbox(address_space &space, int slot, UINT32 hitadr) @@ -1897,9 +1888,9 @@ void raiden2cop_device::LEGACY_cop_take_hit_box_params(UINT8 offs) start_x = INT8(m_LEGACY_cop_collision_info[offs].hitbox_x); } - m_LEGACY_cop_collision_info[offs].min_x = (m_LEGACY_cop_collision_info[offs].x >> 16) + start_x; + m_LEGACY_cop_collision_info[offs].min_x = (cop_collision_info[offs].pos[1]) + start_x; m_LEGACY_cop_collision_info[offs].max_x = m_LEGACY_cop_collision_info[offs].min_x + width; - m_LEGACY_cop_collision_info[offs].min_y = (m_LEGACY_cop_collision_info[offs].y >> 16) + start_y; + m_LEGACY_cop_collision_info[offs].min_y = (cop_collision_info[offs].pos[0]) + start_y; m_LEGACY_cop_collision_info[offs].max_y = m_LEGACY_cop_collision_info[offs].min_y + height; } @@ -1924,15 +1915,15 @@ UINT8 raiden2cop_device::LEGACY_cop_calculate_collsion_detection() if(m_LEGACY_cop_collision_info[1].max_y >= m_LEGACY_cop_collision_info[0].min_y && m_LEGACY_cop_collision_info[1].min_y <= m_LEGACY_cop_collision_info[0].max_y) res &= ~1; - cop_hit_val[1] = (m_LEGACY_cop_collision_info[0].x - m_LEGACY_cop_collision_info[1].x) >> 16; - cop_hit_val[0] = (m_LEGACY_cop_collision_info[0].y - m_LEGACY_cop_collision_info[1].y) >> 16; + cop_hit_val[1] = (cop_collision_info[0].pos[1] - cop_collision_info[1].pos[1]); + cop_hit_val[0] = (cop_collision_info[0].pos[0] - cop_collision_info[1].pos[0]); cop_hit_val[2] = 1; cop_hit_val_stat = res; // TODO: there's also bit 2 and 3 triggered in the tests, no known meaning //popmessage("%d %d %04x %04x %04x %04x",cop_hit_val[1],cop_hit_val[0],m_LEGACY_cop_collision_info[0].hitbox_x,m_LEGACY_cop_collision_info[0].hitbox_y,m_LEGACY_cop_collision_info[1].hitbox_x,m_LEGACY_cop_collision_info[1].hitbox_y); //if(res == 0) - //popmessage("0:%08x %08x %08x 1:%08x %08x %08x\n",m_LEGACY_cop_collision_info[0].x,m_LEGACY_cop_collision_info[0].y,m_LEGACY_cop_collision_info[0].hitbox,m_LEGACY_cop_collision_info[1].x,m_LEGACY_cop_collision_info[1].y,m_LEGACY_cop_collision_info[1].hitbox); + //popmessage("0:%08x %08x %08x 1:%08x %08x %08x\n",cop_collision_info[0].pos[1],cop_collision_info[0].pos[0],m_LEGACY_cop_collision_info[0].hitbox,cop_collision_info[1].pos[1],cop_collision_info[1].pos[0],m_LEGACY_cop_collision_info[1].hitbox); // popmessage("0:%08x %08x %08x %08x 1:%08x %08x %08x %08x\n",m_LEGACY_cop_collision_info[0].min_x,m_LEGACY_cop_collision_info[0].max_x,m_LEGACY_cop_collision_info[0].min_y, m_LEGACY_cop_collision_info[0].max_y, // m_LEGACY_cop_collision_info[1].min_x,m_LEGACY_cop_collision_info[1].max_x,m_LEGACY_cop_collision_info[1].min_y, m_LEGACY_cop_collision_info[1].max_y); @@ -2097,7 +2088,7 @@ WRITE16_MEMBER(raiden2cop_device::LEGACY_cop_cmd_w) if (check_command_matches(command, 0xb80, 0xb82, 0xb84, 0xb86, 0x000, 0x000, 0x000, 0x000, funcval, funcmask)) { - LEGACY_execute_a100(space, offset, data); + execute_a100(space, offset, data); executed = 1; return; } @@ -2113,7 +2104,7 @@ WRITE16_MEMBER(raiden2cop_device::LEGACY_cop_cmd_w) if (check_command_matches(command, 0xba0, 0xba2, 0xba4, 0xba6, 0x000, 0x000, 0x000, 0x000, funcval, funcmask)) { executed = 1; - LEGACY_execute_a900(space, offset, data); + execute_a900(space, offset, data); return; } diff --git a/src/mame/machine/raiden2cop.h b/src/mame/machine/raiden2cop.h index c374f4a277c..3c54826daa9 100644 --- a/src/mame/machine/raiden2cop.h +++ b/src/mame/machine/raiden2cop.h @@ -173,9 +173,7 @@ public: void LEGACY_execute_130e(address_space &space, int offset, UINT16 data); void LEGACY_execute_130e_cupsoc(address_space &space, int offset, UINT16 data); void LEGACY_execute_3b30(address_space &space, int offset, UINT16 data); - void LEGACY_execute_a100(address_space &space, int offset, UINT16 data); 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_42c2(address_space &space, int offset, UINT16 data); void LEGACY_execute_e30e(address_space &space, int offset, UINT16 data); @@ -233,8 +231,8 @@ public: struct LEGACY_collision_info { LEGACY_collision_info(): - x(0), - y(0), + //x(0), + //y(0), min_x(0), min_y(0), max_x(0), @@ -243,7 +241,7 @@ public: hitbox_x(0), hitbox_y(0) {} - int x,y; + //int x,y; INT16 min_x,min_y,max_x,max_y; UINT16 hitbox; UINT16 hitbox_x,hitbox_y;