Previous 199869 Revisions Next

r32340 Wednesday 24th September, 2014 at 03:13:00 UTC by David Haywood
less legacy (nw)
[src/mame/drivers]legionna.c
[src/mame/machine]raiden2cop.c raiden2cop.h

trunk/src/mame/drivers/legionna.c
r32339r32340
9797   AM_RANGE(0x100412, 0x100413) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_src_hi_w) // grainbow
9898   AM_RANGE(0x100414, 0x100415) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_src_lo_w) // grainbow
9999
100//   AM_RANGE(0x10041c, 0x10041d) AM_WRITE(cop_angle_target_w) // angle target (for 0x6200 COP macro) // ADD ME
101//   AM_RANGE(0x10041e, 0x10041f) AM_WRITE(cop_angle_step_w)   // angle step   (for 0x6200 COP macro) // ADD ME
102   AM_RANGE(0x10041c, 0x10041d) AM_DEVWRITE("raiden2cop", raiden2cop_device, LEGACY_cop_angle_compare_w) // angle target (for 0x6200 COP macro) // REMOVE ME
103   AM_RANGE(0x10041e, 0x10041f) AM_DEVWRITE("raiden2cop", raiden2cop_device, LEGACY_cop_angle_mod_val_w)   // angle step   (for 0x6200 COP macro) // REMOVE ME
100   AM_RANGE(0x10041c, 0x10041d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_angle_target_w) // angle target (for 0x6200 COP macro)
101   AM_RANGE(0x10041e, 0x10041f) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_angle_step_w)   // angle step   (for 0x6200 COP macro)
104102
105103   AM_RANGE(0x100420, 0x100421) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_low_w)
106104   AM_RANGE(0x100422, 0x100423) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_high_w)
trunk/src/mame/machine/raiden2cop.c
r32339r32340
5656   m_cop_sprite_dma_abs_x(0),
5757   m_cop_sprite_dma_abs_y(0),
5858
59   m_LEGACY_cop_angle_compare(0),
60   m_LEGACY_cop_angle_mod_val(0),
6159   m_LEGACY_cop_hit_val_x(0),
6260   m_LEGACY_cop_hit_val_y(0),
6361   m_LEGACY_m_cop_hit_val_z(0),
r32339r32340
163161   save_item(NAME(m_cop_sprite_dma_abs_y));
164162
165163   // legacy
166   save_item(NAME(m_LEGACY_cop_angle_compare));
167   save_item(NAME(m_LEGACY_cop_angle_mod_val));
168164   save_item(NAME(m_LEGACY_cop_hit_val_x));
169165   save_item(NAME(m_LEGACY_cop_hit_val_y));
170166   save_item(NAME(m_LEGACY_m_cop_hit_val_z));
r32339r32340
12061202/*------------------------------------------------------------------------------------------------------------------------------------------------*/
12071203
12081204
1209WRITE16_MEMBER(raiden2cop_device::LEGACY_cop_angle_compare_w)
1210{
1211   m_LEGACY_cop_angle_compare = UINT16(data);
1212}
12131205
1214WRITE16_MEMBER(raiden2cop_device::LEGACY_cop_angle_mod_val_w)
1215{
1216   m_LEGACY_cop_angle_mod_val = UINT16(data);
1217}
1218
12191206READ16_MEMBER( raiden2cop_device::LEGACY_cop_collision_status_val_r)
12201207{
12211208   /* these two controls facing direction in Godzilla opponents (only vs.) - x value compare? */
r32339r32340
17041691      flags = space.read_word(cop_regs[1]);
17051692      //space.write_byte(cop_regs[1] + (0^3),space.read_byte(cop_regs[1] + (0^3)) & 0xfb); //correct?
17061693
1707      m_LEGACY_cop_angle_compare &= 0xff;
1708      m_LEGACY_cop_angle_mod_val &= 0xff;
1694      INT8 tempangle_compare = (INT8)cop_angle_target;
1695      INT8 tempangle_mod_val = (INT8)cop_angle_step;
1696
1697      tempangle_compare &= 0xff;
1698      tempangle_mod_val &= 0xff;
1699
1700      cop_angle_target = tempangle_compare;
1701      cop_angle_step = tempangle_mod_val;
1702
17091703      flags &= ~0x0004;
17101704
1711      int delta = cur_angle - m_LEGACY_cop_angle_compare;
1705      int delta = cur_angle - tempangle_compare;
17121706      if (delta >= 128)
17131707         delta -= 256;
17141708      else if (delta < -128)
17151709         delta += 256;
17161710      if (delta < 0)
17171711      {
1718         if (delta >= -m_LEGACY_cop_angle_mod_val)
1712         if (delta >= -tempangle_mod_val)
17191713         {
1720            cur_angle = m_LEGACY_cop_angle_compare;
1714            cur_angle = tempangle_compare;
17211715            flags |= 0x0004;
17221716         }
17231717         else
1724            cur_angle += m_LEGACY_cop_angle_mod_val;
1718            cur_angle += tempangle_mod_val;
17251719      }
17261720      else
17271721      {
1728         if (delta <= m_LEGACY_cop_angle_mod_val)
1722         if (delta <= tempangle_mod_val)
17291723         {
1730            cur_angle = m_LEGACY_cop_angle_compare;
1724            cur_angle = tempangle_compare;
17311725            flags |= 0x0004;
17321726         }
17331727         else
1734            cur_angle -= m_LEGACY_cop_angle_mod_val;
1728            cur_angle -= tempangle_mod_val;
17351729      }
17361730
17371731      space.write_byte(cop_regs[1] + (0 ^ 2), flags);
r32339r32340
17521746      flags = space.read_word(cop_regs[0] + (0 ^ 2));
17531747      //space.write_byte(cop_regs[1] + (0^3),space.read_byte(cop_regs[1] + (0^3)) & 0xfb); //correct?
17541748
1755      m_LEGACY_cop_angle_compare &= 0xff;
1756      m_LEGACY_cop_angle_mod_val &= 0xff;
1749      INT8 tempangle_compare = (INT8)cop_angle_target;
1750      INT8 tempangle_mod_val = (INT8)cop_angle_step;
1751
1752      tempangle_compare &= 0xff;
1753      tempangle_mod_val &= 0xff;
1754
1755      cop_angle_target = tempangle_compare;
1756      cop_angle_step = tempangle_mod_val;
1757
1758
17571759      flags &= ~0x0004;
17581760
1759      int delta = cur_angle - m_LEGACY_cop_angle_compare;
1761      int delta = cur_angle - tempangle_compare;
17601762      if (delta >= 128)
17611763         delta -= 256;
17621764      else if (delta < -128)
17631765         delta += 256;
17641766      if (delta < 0)
17651767      {
1766         if (delta >= -m_LEGACY_cop_angle_mod_val)
1768         if (delta >= -tempangle_mod_val)
17671769         {
1768            cur_angle = m_LEGACY_cop_angle_compare;
1770            cur_angle = tempangle_compare;
17691771            flags |= 0x0004;
17701772         }
17711773         else
1772            cur_angle += m_LEGACY_cop_angle_mod_val;
1774            cur_angle += tempangle_mod_val;
17731775      }
17741776      else
17751777      {
1776         if (delta <= m_LEGACY_cop_angle_mod_val)
1778         if (delta <= tempangle_mod_val)
17771779         {
1778            cur_angle = m_LEGACY_cop_angle_compare;
1780            cur_angle = tempangle_compare;
17791781            flags |= 0x0004;
17801782         }
17811783         else
1782            cur_angle -= m_LEGACY_cop_angle_mod_val;
1784            cur_angle -= tempangle_mod_val;
17831785      }
17841786
17851787      space.write_byte(cop_regs[0] + (0 ^ 3), flags);
trunk/src/mame/machine/raiden2cop.h
r32339r32340
177177   DECLARE_WRITE16_MEMBER(cop_sprite_dma_abs_x_w);
178178
179179   // legacy code, to be removed / refactored into above
180   INT8 m_LEGACY_cop_angle_compare;
181   INT8 m_LEGACY_cop_angle_mod_val;
182   DECLARE_WRITE16_MEMBER(LEGACY_cop_angle_compare_w);
183   DECLARE_WRITE16_MEMBER(LEGACY_cop_angle_mod_val_w);
184180   INT16 m_LEGACY_cop_hit_val_x,m_LEGACY_cop_hit_val_y,m_LEGACY_m_cop_hit_val_z;
185181   int m_LEGACY_r0, m_LEGACY_r1;
186182   DECLARE_READ16_MEMBER(LEGACY_cop_collision_status_val_r);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team