Previous 199869 Revisions Next

r32372 Thursday 25th September, 2014 at 13:59:25 UTC by David Haywood
code reduction (nw)
[src/mame/machine]raiden2cop.c raiden2cop.h

trunk/src/mame/machine/raiden2cop.c
r32371r32372
1280128014 - a180 (a100  ) :  (b80, b82, b84, b86, 000, 000, 000, 000)  0     02ff   (grainbow)
1281128114 - a100 (a100  ) :  (b80, b82, b84, b86, 000, 000, 000, 000)  0     00ff   (raiden2, raidendx)
12821282*/
1283
1284// the last value (ffff / 02ff / 00ff depending on game) might be important here as they've been intentionally changed for the different games
12831285void raiden2cop_device::execute_a100(address_space &space, int offset, UINT16 data)
12841286{
12851287   cop_collision_read_pos(space, 0, cop_regs[0], data & 0x0080);
12861288}
12871289
1288void raiden2cop_device::LEGACY_execute_a100(address_space &space, int offset, UINT16 data)
1289{
1290   m_LEGACY_cop_collision_info[0].y = (space.read_dword(cop_regs[0] + 4));
1291   m_LEGACY_cop_collision_info[0].x = (space.read_dword(cop_regs[0] + 8));
1292}
1293
12941290/*
1295129115 - a900 (a900  ) :  (ba0, ba2, ba4, ba6, 000, 000, 000, 000)  f     ffff   (heatbrl, zeroteam, xsedae)
1296129215 - a980 (a900  ) :  (ba0, ba2, ba4, ba6, 000, 000, 000, 000)  f     ffff   (legionna, cupsoc, godzilla, denjinmk)
r32371r32372
13021298   cop_collision_read_pos(space, 1, cop_regs[1], data & 0x0080);
13031299}
13041300
1305void raiden2cop_device::LEGACY_execute_a900(address_space &space, int offset, UINT16 data)
1306{
1307   m_LEGACY_cop_collision_info[1].y = (space.read_dword(cop_regs[1] + 4));
1308   m_LEGACY_cop_collision_info[1].x = (space.read_dword(cop_regs[1] + 8));
1309}
13101301
13111302/*
1312130316 - b080 (b000  ) :  (b40, bc0, bc2, 000, 000, 000, 000, 000)  9     ffff   (heatbrl)
r32371r32372
15261517void  raiden2cop_device::cop_collision_read_pos(address_space &space, int slot, UINT32 spradr, bool allow_swap)
15271518{
15281519   cop_collision_info[slot].allow_swap = allow_swap;
1529   cop_collision_info[slot].flags_swap = space.read_word(spradr+2);
1520   cop_collision_info[slot].flags_swap = cop_read_word(space, spradr+2);
15301521   cop_collision_info[slot].spradr = spradr;
15311522   for(int i=0; i<3; i++)
1532      cop_collision_info[slot].pos[i] = space.read_word(spradr+6+4*i);
1523      cop_collision_info[slot].pos[i] = cop_read_word(space, spradr+6+4*i);
15331524}
15341525
15351526void  raiden2cop_device::cop_collision_update_hitbox(address_space &space, int slot, UINT32 hitadr)
r32371r32372
18971888      start_x = INT8(m_LEGACY_cop_collision_info[offs].hitbox_x);
18981889   }
18991890
1900   m_LEGACY_cop_collision_info[offs].min_x = (m_LEGACY_cop_collision_info[offs].x >> 16) + start_x;
1891   m_LEGACY_cop_collision_info[offs].min_x = (cop_collision_info[offs].pos[1]) + start_x;
19011892   m_LEGACY_cop_collision_info[offs].max_x = m_LEGACY_cop_collision_info[offs].min_x + width;
1902   m_LEGACY_cop_collision_info[offs].min_y = (m_LEGACY_cop_collision_info[offs].y >> 16) + start_y;
1893   m_LEGACY_cop_collision_info[offs].min_y = (cop_collision_info[offs].pos[0]) + start_y;
19031894   m_LEGACY_cop_collision_info[offs].max_y = m_LEGACY_cop_collision_info[offs].min_y + height;
19041895}
19051896
r32371r32372
19241915   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)
19251916      res &= ~1;
19261917
1927   cop_hit_val[1] = (m_LEGACY_cop_collision_info[0].x - m_LEGACY_cop_collision_info[1].x) >> 16;
1928   cop_hit_val[0] = (m_LEGACY_cop_collision_info[0].y - m_LEGACY_cop_collision_info[1].y) >> 16;
1918   cop_hit_val[1] = (cop_collision_info[0].pos[1] - cop_collision_info[1].pos[1]);
1919   cop_hit_val[0] = (cop_collision_info[0].pos[0] - cop_collision_info[1].pos[0]);
19291920   cop_hit_val[2] = 1;
19301921   cop_hit_val_stat = res; // TODO: there's also bit 2 and 3 triggered in the tests, no known meaning
19311922
19321923   //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);
19331924
19341925   //if(res == 0)
1935   //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);
1926   //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);
19361927//  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,
19371928//                                                   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);
19381929
r32371r32372
20972088
20982089   if (check_command_matches(command, 0xb80, 0xb82, 0xb84, 0xb86, 0x000, 0x000, 0x000, 0x000, funcval, funcmask))
20992090   {
2100      LEGACY_execute_a100(space, offset, data);
2091      execute_a100(space, offset, data);
21012092      executed = 1;
21022093      return;
21032094   }
r32371r32372
21132104   if (check_command_matches(command, 0xba0, 0xba2, 0xba4, 0xba6, 0x000, 0x000, 0x000, 0x000, funcval, funcmask))
21142105   {
21152106      executed = 1;
2116      LEGACY_execute_a900(space, offset, data);
2107      execute_a900(space, offset, data);
21172108      return;
21182109   }
21192110
trunk/src/mame/machine/raiden2cop.h
r32371r32372
173173   void LEGACY_execute_130e(address_space &space, int offset, UINT16 data);
174174   void LEGACY_execute_130e_cupsoc(address_space &space, int offset, UINT16 data);
175175   void LEGACY_execute_3b30(address_space &space, int offset, UINT16 data);
176   void LEGACY_execute_a100(address_space &space, int offset, UINT16 data);
177176   void LEGACY_execute_b100(address_space &space, int offset, UINT16 data);
178   void LEGACY_execute_a900(address_space &space, int offset, UINT16 data);
179177   void LEGACY_execute_b900(address_space &space, int offset, UINT16 data);
180178   void LEGACY_execute_42c2(address_space &space, int offset, UINT16 data);
181179   void LEGACY_execute_e30e(address_space &space, int offset, UINT16 data);
r32371r32372
233231   struct LEGACY_collision_info
234232   {
235233      LEGACY_collision_info():
236      x(0),
237      y(0),
234      //x(0),
235      //y(0),
238236      min_x(0),
239237      min_y(0),
240238      max_x(0),
r32371r32372
243241      hitbox_x(0),
244242      hitbox_y(0) {}
245243
246      int x,y;
244      //int x,y;
247245      INT16 min_x,min_y,max_x,max_y;
248246      UINT16 hitbox;
249247      UINT16 hitbox_x,hitbox_y;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team