Previous 199869 Revisions Next

r32399 Friday 26th September, 2014 at 12:00:35 UTC by David Haywood
refactor (nw)
[src/mame/machine]raiden2cop.c raiden2cop.h

trunk/src/mame/machine/raiden2cop.c
r32398r32399
16211621   UINT16 hithoxy = space.read_word(hitadr2);
16221622   UINT16 hitboxx = space.read_word(hitadr2 + 2);
16231623
1624   INT16 start_x,start_y,height,width;
1624   INT16 dx[3],size[3];
16251625
1626   {
1627      height = UINT8(hithoxy >> 8);
1628      start_y = INT8(hithoxy);
1629      width = UINT8(hitboxx >> 8);
1630      start_x = INT8(hitboxx);
1631   }
16321626
1627   size[0] = UINT8(hithoxy >> 8);
1628   dx[0] = INT8(hithoxy);
1629   size[1] = UINT8(hitboxx >> 8);
1630   dx[1] = INT8(hitboxx);
1631   size[2] = 0;
1632   dx[2] = 0;
1633
16331634   int j = slot;
1635   int i;
16341636
16351637   //for (j = 0; j < 2; j++)
1638   for (i = 0; i < 3;i++)
16361639   {
1637      if (cop_collision_info[j].allow_swap && (cop_collision_info[j].flags_swap & (1 << 1)))
1640      if (cop_collision_info[j].allow_swap && (cop_collision_info[j].flags_swap & (1 << i)))
16381641      {
1639         m_LEGACY_cop_collision_info[j].max_x = (cop_collision_info[j].pos[1]) - start_x;
1640         m_LEGACY_cop_collision_info[j].min_x = m_LEGACY_cop_collision_info[j].max_x - width;
1642         m_LEGACY_cop_collision_info[j].max[i] = (cop_collision_info[j].pos[i]) - dx[i];
1643         m_LEGACY_cop_collision_info[j].min[i] = m_LEGACY_cop_collision_info[j].max[i] - size[i];
16411644      }
16421645      else
16431646      {
1644         m_LEGACY_cop_collision_info[j].min_x = (cop_collision_info[j].pos[1]) + start_x;
1645         m_LEGACY_cop_collision_info[j].max_x = m_LEGACY_cop_collision_info[j].min_x + width;
1647         m_LEGACY_cop_collision_info[j].min[i] = (cop_collision_info[j].pos[i]) + dx[i];
1648         m_LEGACY_cop_collision_info[j].max[i] = m_LEGACY_cop_collision_info[j].min[i] + size[i];
16461649      }
1647
1648      if (cop_collision_info[j].allow_swap && (cop_collision_info[j].flags_swap & (1 << 0)))
1649      {
1650         m_LEGACY_cop_collision_info[j].max_y = (cop_collision_info[j].pos[0]) - start_y;
1651         m_LEGACY_cop_collision_info[j].min_y = m_LEGACY_cop_collision_info[j].max_y - height;
1652      }
1653      else
1654      {
1655         m_LEGACY_cop_collision_info[j].min_y = (cop_collision_info[j].pos[0]) + start_y;
1656         m_LEGACY_cop_collision_info[j].max_y = m_LEGACY_cop_collision_info[j].min_y + height;
1657      }
16581650   }
16591651   static UINT8 res;
16601652
16611653   res = 3;
16621654
16631655   /* outbound X check */
1664   if(m_LEGACY_cop_collision_info[0].max_x >= m_LEGACY_cop_collision_info[1].min_x && m_LEGACY_cop_collision_info[0].min_x <= m_LEGACY_cop_collision_info[1].max_x)
1656   if(m_LEGACY_cop_collision_info[0].max[1] >= m_LEGACY_cop_collision_info[1].min[1] && m_LEGACY_cop_collision_info[0].min[1] <= m_LEGACY_cop_collision_info[1].max[1])
16651657      res &= ~2;
16661658
1667   if(m_LEGACY_cop_collision_info[1].max_x >= m_LEGACY_cop_collision_info[0].min_x && m_LEGACY_cop_collision_info[1].min_x <= m_LEGACY_cop_collision_info[0].max_x)
1659   if(m_LEGACY_cop_collision_info[1].max[1] >= m_LEGACY_cop_collision_info[0].min[1] && m_LEGACY_cop_collision_info[1].min[1] <= m_LEGACY_cop_collision_info[0].max[1])
16681660      res &= ~2;
16691661
16701662   /* outbound Y check */
1671   if(m_LEGACY_cop_collision_info[0].max_y >= m_LEGACY_cop_collision_info[1].min_y && m_LEGACY_cop_collision_info[0].min_y <= m_LEGACY_cop_collision_info[1].max_y)
1663   if(m_LEGACY_cop_collision_info[0].max[0] >= m_LEGACY_cop_collision_info[1].min[0] && m_LEGACY_cop_collision_info[0].min[0] <= m_LEGACY_cop_collision_info[1].max[0])
16721664      res &= ~1;
16731665
1674   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)
1666   if(m_LEGACY_cop_collision_info[1].max[0] >= m_LEGACY_cop_collision_info[0].min[0] && m_LEGACY_cop_collision_info[1].min[0] <= m_LEGACY_cop_collision_info[0].max[0])
16751667      res &= ~1;
16761668
1677   cop_hit_val[1] = (cop_collision_info[0].pos[1] - cop_collision_info[1].pos[1]);
1678   cop_hit_val[0] = (cop_collision_info[0].pos[0] - cop_collision_info[1].pos[0]);
1679   cop_hit_val[2] = 1;
1669   for (i = 0; i < 3;i++)
1670      cop_hit_val[i] = (cop_collision_info[0].pos[i] - cop_collision_info[1].pos[i]);
1671
16801672   cop_hit_val_stat = res; // TODO: there's also bit 2 and 3 triggered in the tests, no known meaning
16811673
16821674
trunk/src/mame/machine/raiden2cop.h
r32398r32399
230230
231231   struct LEGACY_collision_info
232232   {
233      LEGACY_collision_info():
234      min_x(0),
235      min_y(0),
236      max_x(0),
237      max_y(0)
238       {}
233      LEGACY_collision_info()
234      {
235         min[0] = min[1] = min[2] = 0;
236         max[0] = max[1] = max[2] = 0;
237     
238      }
239239
240      INT16 min_x,min_y,max_x,max_y;
240      INT16 min[3], max[3];
241241   };
242242
243243   struct LEGACY_collision_info m_LEGACY_cop_collision_info[2];

Previous 199869 Revisions Next


© 1997-2024 The MAME Team