Previous 199869 Revisions Next

r29196 Wednesday 2nd April, 2014 at 19:25:55 UTC by O. Galibert
namcos23: Enhance matrix-vector mul [O. Galibert]
[src/mame/drivers]namcos23.c

trunk/src/mame/drivers/namcos23.c
r29195r29196
16371637      logerror("WARNING: c435_matrix_vector_mul with size %d\n", m_c435_buffer[0] & 0xf);
16381638      return;
16391639   }
1640   if(m_c435_buffer[3] != 0xffff)
1641      logerror("WARNING: c435_matrix_vector_mul with +2=%04x\n", m_c435_buffer[3]);
16421640
1643   INT32 *t       = c435_getv(m_c435_buffer[1]);
1644   const INT16 *m = c435_getm(m_c435_buffer[2]);
1645   const INT32 *v = c435_getv(m_c435_buffer[4]);
1641   if(m_c435_buffer[3] != 0xffff) {
1642      INT32 *t        = c435_getv(m_c435_buffer[1]);
1643      const INT16 *m  = c435_getm(m_c435_buffer[2]);
1644      const INT32 *vt = c435_getv(m_c435_buffer[3]);
1645      const INT32 *v  = c435_getv(m_c435_buffer[4]);
16461646
1647   t[0] = INT32((m[0]*INT64(v[0]) + m[1]*INT64(v[1]) + m[2]*INT64(v[2])) >> 14);
1648   t[1] = INT32((m[3]*INT64(v[0]) + m[4]*INT64(v[1]) + m[5]*INT64(v[2])) >> 14);
1649   t[2] = INT32((m[6]*INT64(v[0]) + m[7]*INT64(v[1]) + m[8]*INT64(v[2])) >> 14);
1647      t[0] = INT32((m[0]*INT64(v[0]) + m[1]*INT64(v[1]) + m[2]*INT64(v[2])) >> 14) + vt[0];
1648      t[1] = INT32((m[3]*INT64(v[0]) + m[4]*INT64(v[1]) + m[5]*INT64(v[2])) >> 14) + vt[1];
1649      t[2] = INT32((m[6]*INT64(v[0]) + m[7]*INT64(v[1]) + m[8]*INT64(v[2])) >> 14) + vt[2];
1650
1651   } else {
1652      INT32 *t       = c435_getv(m_c435_buffer[1]);
1653      const INT16 *m = c435_getm(m_c435_buffer[2]);
1654      const INT32 *v = c435_getv(m_c435_buffer[4]);
1655
1656      t[0] = INT32((m[0]*INT64(v[0]) + m[1]*INT64(v[1]) + m[2]*INT64(v[2])) >> 14);
1657      t[1] = INT32((m[3]*INT64(v[0]) + m[4]*INT64(v[1]) + m[5]*INT64(v[2])) >> 14);
1658      t[2] = INT32((m[6]*INT64(v[0]) + m[7]*INT64(v[1]) + m[8]*INT64(v[2])) >> 14);
1659   }
16501660}
16511661
16521662void namcos23_state::c435_matrix_set() // 0.4
r29195r29196
17911801      break;
17921802
17931803   case 0x4000:
1794      switch(h & 0xf00) {
1795      case 0x400: c435_scaling_set(); break;
1796      case 0xf00: c435_state_set(); break;
1804      switch(h & 0x3f00) {
1805      case 0x0400: c435_scaling_set(); break;
1806      case 0x0f00: c435_state_set(); break;
17971807      default: known = false; break;
17981808      }
17991809      break;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team