Previous 199869 Revisions Next

r18692 Wednesday 24th October, 2012 at 18:38:00 UTC by hap
some indentation cleanup, like how it's in (most)other mame code
[src/mame/drivers]namcos23.c

trunk/src/mame/drivers/namcos23.c
r18691r18692
15211521{
15221522   c417_t &c417 = m_c417;
15231523
1524   switch(offset) {
1524   switch (offset)
1525   {
15251526      /* According to timecrs2c, +0 is the status word with bits being:
15261527           15: test mode flag (huh?)
15271528           10: fifo data ready
r18691r18692
15361537           1:  1st c435 busy (inverted)
15371538           0:  xcpreq
15381539         */
1539   case 0: return 0x8e | (machine().primary_screen->vblank() ? 0x0000 : 0x8000);
1540   case 1: return c417.adr;
1541   case 4:
1542      //      logerror("c417_r %04x = %04x (%08x, %08x)\n", c417.adr, c417.ram[c417.adr], space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1543      return c417.ram[c417.adr];
1544   case 5:
1545      if(c417.pointrom_adr >= m_ptrom_limit)
1546         return 0xffff;
1547      return m_ptrom[c417.pointrom_adr] >> 16;
1548   case 6:
1549      if(c417.pointrom_adr >= m_ptrom_limit)
1550         return 0xffff;
1551      return m_ptrom[c417.pointrom_adr];
1552
1540      case 0:
1541         return 0x8e | (machine().primary_screen->vblank() ? 0x0000 : 0x8000);
1542      case 1:
1543         return c417.adr;
1544      case 4:
1545         //logerror("c417_r %04x = %04x (%08x, %08x)\n", c417.adr, c417.ram[c417.adr], space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1546         return c417.ram[c417.adr];
1547      case 5:
1548         if(c417.pointrom_adr >= m_ptrom_limit)
1549            return 0xffff;
1550         return m_ptrom[c417.pointrom_adr] >> 16;
1551      case 6:
1552         if(c417.pointrom_adr >= m_ptrom_limit)
1553            return 0xffff;
1554         return m_ptrom[c417.pointrom_adr];
15531555   }
15541556
15551557   logerror("c417_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
r18691r18692
15601562{
15611563   c417_t &c417 = m_c417;
15621564
1563   switch(offset) {
1564   case 0:
1565      logerror("p3d PIO %04x\n", data);
1566      break;
1567   case 1:
1568      COMBINE_DATA(&c417.adr);
1569      break;
1570   case 2:
1571      c417.pointrom_adr = (c417.pointrom_adr << 16) | data;
1572      break;
1573   case 3:
1574      c417.pointrom_adr = 0;
1575      break;
1576   case 4:
1577      //        logerror("c417_w %04x = %04x (%08x, %08x)\n", c417.adr, data, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1578      COMBINE_DATA(c417.ram + c417.adr);
1579      break;
1580   case 7:
1581      logerror("c417_w: ack IRQ 2 (%x)\n", data);
1582      m_maincpu->set_input_line(MIPS3_IRQ2, CLEAR_LINE);
1583      break;
1584   default:
1585      logerror("c417_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1586      break;
1565   switch(offset)
1566   {
1567      case 0:
1568         logerror("p3d PIO %04x\n", data);
1569         break;
1570      case 1:
1571         COMBINE_DATA(&c417.adr);
1572         break;
1573      case 2:
1574         c417.pointrom_adr = (c417.pointrom_adr << 16) | data;
1575         break;
1576      case 3:
1577         c417.pointrom_adr = 0;
1578         break;
1579      case 4:
1580         //logerror("c417_w %04x = %04x (%08x, %08x)\n", c417.adr, data, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1581         COMBINE_DATA(c417.ram + c417.adr);
1582         break;
1583      case 7:
1584         logerror("c417_w: ack IRQ 2 (%x)\n", data);
1585         m_maincpu->set_input_line(MIPS3_IRQ2, CLEAR_LINE);
1586         break;
1587      default:
1588         logerror("c417_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1589         break;
15871590   }
15881591}
15891592
r18691r18692
16231626{
16241627   c412_t &c412 = m_c412;
16251628
1626   switch(offset) {
1627   case 3:
1628      // 0001 = busy, 0002 = game uploads things
1629      return 0x0002;
1630   case 8: return c412.adr;
1631   case 9: return c412.adr >> 16;
1632   case 10: return s23_c412_ram_r(space, c412.adr, mem_mask);
1629   switch(offset)
1630   {
1631      case 0x3:
1632         return 0x0002; // 0001 = busy, 0002 = game uploads things
1633      case 0x8:
1634         return c412.adr;
1635      case 0x9:
1636         return c412.adr >> 16;
1637      case 0xa:
1638         return s23_c412_ram_r(space, c412.adr, mem_mask);
16331639   }
16341640
16351641   logerror("c412_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
r18691r18692
16401646{
16411647   c412_t &c412 = m_c412;
16421648
1643   switch(offset) {
1644   case 8: c412.adr = (data & mem_mask) | (c412.adr & (0xffffffff ^ mem_mask)); break;
1645   case 9: c412.adr = ((data & mem_mask) << 16) | (c412.adr & (0xffffffff ^ (mem_mask << 16))); break;
1646   case 10: s23_c412_ram_w(space, c412.adr, data, mem_mask); c412.adr += 2; break;
1647   default:
1648      logerror("c412_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1649      break;
1649   switch (offset)
1650   {
1651      case 8:
1652         c412.adr = (data & mem_mask) | (c412.adr & (0xffffffff ^ mem_mask));
1653         break;
1654      case 9:
1655         c412.adr = ((data & mem_mask) << 16) | (c412.adr & (0xffffffff ^ (mem_mask << 16)));
1656         break;
1657      case 10:
1658         s23_c412_ram_w(space, c412.adr, data, mem_mask);
1659         c412.adr += 2;
1660         break;
1661      default:
1662         logerror("c412_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1663         break;
16501664   }
16511665}
16521666
r18691r18692
16821696{
16831697   c421_t &c421 = m_c421;
16841698
1685   switch(offset) {
1686   case 0: return s23_c421_ram_r(space, c421.adr & 0xfffff, mem_mask);
1687   case 2: return c421.adr >> 16;
1688   case 3: return c421.adr;
1699   switch (offset)
1700   {
1701      case 0:
1702         return s23_c421_ram_r(space, c421.adr & 0xfffff, mem_mask);
1703
1704      case 2:
1705         return c421.adr >> 16;
1706      case 3:
1707         return c421.adr;
16891708   }
16901709
16911710   logerror("c421_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
r18691r18692
16961715{
16971716   c421_t &c421 = m_c421;
16981717
1699   switch(offset) {
1700   case 0: s23_c421_ram_w(space, c421.adr & 0xfffff, data, mem_mask); c421.adr += 2; break;
1701   case 2: c421.adr = ((data & mem_mask) << 16) | (c421.adr & (0xffffffff ^ (mem_mask << 16))); break;
1702   case 3: c421.adr = (data & mem_mask) | (c421.adr & (0xffffffff ^ mem_mask)); break;
1703   default:
1704      logerror("c421_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1705      break;
1718   switch (offset)
1719   {
1720      case 0:
1721         s23_c421_ram_w(space, c421.adr & 0xfffff, data, mem_mask);
1722         c421.adr += 2;
1723         break;
1724      case 2:
1725         c421.adr = ((data & mem_mask) << 16) | (c421.adr & (0xffffffff ^ (mem_mask << 16)));
1726         break;
1727      case 3:
1728         c421.adr = (data & mem_mask) | (c421.adr & (0xffffffff ^ mem_mask));
1729         break;
1730      default:
1731         logerror("c421_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1732         break;
17061733   }
17071734}
17081735
17091736WRITE16_MEMBER(namcos23_state::s23_ctl_w)
17101737{
1711   switch(offset) {
1712   case 0: {
1713      if(m_ctl_led != (data & 0xff)) {
1714         m_ctl_led = data;
1715/*          logerror("LEDS %c%c%c%c%c%c%c%c\n",
1716                     m_ctl_led & 0x80 ? '.' : '#',
1717                     m_ctl_led & 0x40 ? '.' : '#',
1718                     m_ctl_led & 0x20 ? '.' : '#',
1719                     m_ctl_led & 0x10 ? '.' : '#',
1720                     m_ctl_led & 0x08 ? '.' : '#',
1721                     m_ctl_led & 0x04 ? '.' : '#',
1722                     m_ctl_led & 0x02 ? '.' : '#',
1723                     m_ctl_led & 0x01 ? '.' : '#');*/
1724      }
1725      break;
1726   }
1738   switch (offset)
1739   {
1740      case 0:
1741         if (m_ctl_led != (data & 0xff))
1742         {
1743            m_ctl_led = data & 0xff;
1744            for (int i = 0; i < 8; i++)
1745               output_set_lamp_value(i, m_ctl_led>>i & 1);
1746         }
1747         break;
17271748
1728   case 2: case 3:
1729      // These may be coming from another CPU, in particular the I/O one
1730      m_ctl_inp_buffer[offset-2] = ioport(offset == 2 ? "P1" : "P2")->read();
1731      break;
1732   case 5:
1733      if(m_ctl_vbl_active) {
1734         m_ctl_vbl_active = false;
1735         space.device().execute().set_input_line(MIPS3_IRQ0, CLEAR_LINE);
1736      }
1737      break;
1749      case 2: case 3:
1750         // These may be coming from another CPU, in particular the I/O one
1751         m_ctl_inp_buffer[offset-2] = ioport(offset == 2 ? "P1" : "P2")->read();
1752         break;
1753      case 5:
1754         if(m_ctl_vbl_active)
1755         {
1756            m_ctl_vbl_active = false;
1757            space.device().execute().set_input_line(MIPS3_IRQ0, CLEAR_LINE);
1758         }
1759         break;
17381760
1739   case 6:   // gmen wars spams this heavily with 0 prior to starting the GMEN board test
1740      if (data != 0)
1761      case 6:   // gmen wars spams this heavily with 0 prior to starting the GMEN board test
1762         if (data != 0)
1763            logerror("ctl_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1764         break;
1765
1766      default:
17411767         logerror("ctl_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1742      break;
1743
1744   default:
1745      logerror("ctl_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
17461768   }
17471769}
17481770
17491771READ16_MEMBER(namcos23_state::s23_ctl_r)
17501772{
1751   switch(offset) {
1773   switch (offset)
1774   {
17521775      // 0100 set freezes gorgon (polygon fifo flag)
1753   case 1: return 0x0000 | ioport("DSW")->read();
1754   case 2: case 3: {
1755      UINT16 res = m_ctl_inp_buffer[offset-2] & 0x800 ? 0xffff : 0x0000;
1756      m_ctl_inp_buffer[offset-2] = (m_ctl_inp_buffer[offset-2] << 1) | 1;
1757      return res;
1776      case 1:
1777         return 0x0000 | ioport("DSW")->read();
1778      case 2: case 3:
1779      {
1780         UINT16 res = m_ctl_inp_buffer[offset-2] & 0x800 ? 0xffff : 0x0000;
1781         m_ctl_inp_buffer[offset-2] = (m_ctl_inp_buffer[offset-2] << 1) | 1;
1782         return res;
1783      }
17581784   }
1759   }
1785
17601786   logerror("ctl_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
17611787   return 0xffff;
17621788}
r18691r18692
17781804{
17791805   c361_t &c361 = m_c361;
17801806
1781   switch(offset)
1807   switch (offset)
17821808   {
1783   case 0:
1784      m_bgtilemap->set_scrollx(0, data&0xfff);
1785      break;
1809      case 0:
1810         m_bgtilemap->set_scrollx(0, data&0xfff);
1811         break;
17861812
1787   case 1:
1788      m_bgtilemap->set_scrolly(0, data&0xfff);
1789      break;
1813      case 1:
1814         m_bgtilemap->set_scrolly(0, data&0xfff);
1815         break;
17901816
1791   case 4:   // interrupt control
1792      c361.scanline = data & 0x1ff;
1793      c361.timer->adjust(machine().primary_screen->time_until_pos(c361.scanline));
1794      break;
1817      case 4:   // interrupt control
1818         c361.scanline = data & 0x1ff;
1819         c361.timer->adjust(machine().primary_screen->time_until_pos(c361.scanline));
1820         break;
17951821
1796   default:
1797      logerror("c361_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1822      default:
1823         logerror("c361_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
1824         break;
17981825   }
17991826}
18001827
18011828READ16_MEMBER(namcos23_state::s23_c361_r)
18021829{
1803   switch(offset)
1830   switch (offset)
18041831   {
1805   case 5: m_maincpu->set_input_line(MIPS3_IRQ1, CLEAR_LINE); return machine().primary_screen->vblank() ? 0x1ff : machine().primary_screen->vpos();
1806   case 6: return machine().primary_screen->vblank();
1832      case 5:
1833         m_maincpu->set_input_line(MIPS3_IRQ1, CLEAR_LINE);
1834         return machine().primary_screen->vblank() ? 0x1ff : machine().primary_screen->vpos();
1835      case 6:
1836         return machine().primary_screen->vblank();
18071837   }
1838
18081839   logerror("c361_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
18091840   return 0xffff;
18101841}
r18691r18692
18361867      default:
18371868         logerror("c422_w: %04x @ %x\n", data, offset);
18381869         break;
1839
18401870   }
18411871
18421872   COMBINE_DATA(&c422.regs[offset]);
r18691r18692
19441974   bitmap_rgb32 *bitmap = (bitmap_rgb32 *)dest;
19451975   UINT32 *img = &bitmap->pix32(scanline, extent->startx);
19461976
1947   for(int x = extent->startx; x < extent->stopx; x++) {
1977   for(int x = extent->startx; x < extent->stopx; x++)
1978   {
19481979      float z = w ? 1/w : 0;
19491980      UINT32 pcol = rd->texture_lookup(*rd->machine, rd->pens, u*z, v*z);
19501981      float ll = l*z;
r18691r18692
19621993{
19631994   if(id == 0x8000)
19641995      return state->m_light_vector;
1965   if(id >= 0x100) {
1996   if(id >= 0x100)
1997   {
19661998      memset(state->m_spv, 0, sizeof(state->m_spv));
19671999      return state->m_spv;
19682000   }
r18691r18692
19712003
19722004static INT16 *p3d_getm(namcos23_state *state, UINT16 id)
19732005{
1974   if(id >= 0x100) {
2006   if(id >= 0x100)
2007   {
19752008      memset(state->m_spm, 0, sizeof(state->m_spm));
19762009      return state->m_spm;
19772010   }
r18691r18692
19802013
19812014static void p3d_matrix_set(namcos23_state *state, const UINT16 *p, int size)
19822015{
1983   if(size != 10) {
2016   if(size != 10)
2017   {
19842018      logerror("WARNING: p3d_matrix_set with size %d\n", size);
19852019      return;
19862020   }
r18691r18692
19912025
19922026static void p3d_vector_set(namcos23_state *state, const UINT16 *p, int size)
19932027{
1994   if(size != 7) {
2028   if(size != 7)
2029   {
19952030      logerror("WARNING: p3d_vector_set with size %d\n", size);
19962031      return;
19972032   }
19982033   INT32 *t = p3d_getv(state, *p++);
1999   for(int i=0; i<3; i++) {
2034   for(int i=0; i<3; i++)
2035   {
20002036      t[i] = u32_to_s24((p[0] << 16) | p[1]);
20012037      p += 2;
20022038   }
r18691r18692
20042040
20052041static void p3d_scaling_set(namcos23_state *state, const UINT16 *p, int size)
20062042{
2007   if(size != 1) {
2043   if(size != 1)
2044   {
20082045      logerror("WARNING: p3d_scaling_set with size %d\n", size);
20092046      return;
20102047   }
r18691r18692
20132050
20142051static void p3d_vector_matrix_mul(namcos23_state *state, const UINT16 *p, int size)
20152052{
2016   if(size != 4) {
2053   if(size != 4)
2054   {
20172055      logerror("WARNING: p3d_vector_matrix_mul with size %d\n", size);
20182056      return;
20192057   }
r18691r18692
20312069
20322070static void p3d_matrix_vector_mul(namcos23_state *state, const UINT16 *p, int size)
20332071{
2034   if(size != 4) {
2072   if(size != 4)
2073   {
20352074      logerror("WARNING: p3d_matrix_vector_mul with size %d\n", size);
20362075      return;
20372076   }
r18691r18692
20502089
20512090static void p3d_matrix_matrix_mul(namcos23_state *state, const UINT16 *p, int size)
20522091{
2053   if(size != 4) {
2092   if(size != 4)
2093   {
20542094      logerror("WARNING: p3d_matrix_matrix_mul with size %d\n", size);
20552095      return;
20562096   }
r18691r18692
20762116{
20772117   render_t &render = state->m_render;
20782118
2079   if(size != 3) {
2119   if(size != 3)
2120   {
20802121      logerror("WARNING: p3d_render with size %d\n", size);
20812122      return;
20822123   }
r18691r18692
20872128   if(p[0] == 0xd96)
20882129      return;
20892130
2090   if(render.count[render.cur] >= RENDER_MAX_ENTRIES) {
2131   if(render.count[render.cur] >= RENDER_MAX_ENTRIES)
2132   {
20912133      logerror("WARNING: render buffer full\n");
20922134      return;
20932135   }
r18691r18692
21182160{
21192161   render_t &render = state->m_render;
21202162
2121   if(size != 0) {
2163   if(size != 0)
2164   {
21222165      logerror("WARNING: p3d_flush with size %d\n", size);
21232166      return;
21242167   }
r18691r18692
21342177   UINT16 buffer[256];
21352178   adr &= 0x1fffffff;
21362179   int pos = 0;
2137   while(pos < size) {
2180
2181   while(pos < size)
2182   {
21382183      UINT16 h = space.read_word(adr+pos);
21392184
21402185      pos += 2;
21412186
21422187      UINT16 h1;
21432188      int psize;
2144      if(h & 0x4000) {
2189      if(h & 0x4000)
2190      {
21452191         h1 = h & 0xff00;
21462192         psize = h & 0xff;
2147      } else {
2193      }
2194      else
2195      {
21482196         h1 = h & 0xfff0;
21492197         psize = h & 0xf;
21502198      }
21512199
2152      if(size-pos < psize*2) {
2200      if(size-pos < psize*2)
2201      {
21532202         logerror("WARNING: short packet (header %04x, remaining %x)\n", h, (size-pos)/2);
21542203         return;
21552204      }
21562205
2157      for(int i=0; i < psize; i++) {
2206      for(int i=0; i < psize; i++)
2207      {
21582208         buffer[i] = space.read_word(adr+pos);
21592209         pos += 2;
21602210      }
21612211
2162      switch(h1) {
2163      case 0x0040: p3d_matrix_set(state, buffer, psize); break;
2164      case 0x0050: p3d_vector_set(state, buffer, psize); break;
2165      case 0x0000: p3d_matrix_matrix_mul(state, buffer, psize); break;
2166      case 0x0810: p3d_matrix_vector_mul(state, buffer, psize); break;
2167      case 0x1010: p3d_vector_matrix_mul(state, buffer, psize); break;
2168      case 0x4400: p3d_scaling_set(state, buffer, psize); break;
2169      case 0x8000: p3d_render(state, buffer, psize, false); break;
2170      case 0x8080: p3d_render(state, buffer, psize, true); break;
2171      case 0xc000: p3d_flush(state, buffer, psize); break;
2172      default: {
2173         if(0) {
2174            logerror("p3d - [%04x] %04x", h1, h);
2175            for(int i=0; i<psize; i++)
2176               logerror(" %04x", buffer[i]);
2177            logerror("\n");
2178         }
2179         break;
2212      switch(h1)
2213      {
2214         case 0x0040: p3d_matrix_set(state, buffer, psize); break;
2215         case 0x0050: p3d_vector_set(state, buffer, psize); break;
2216         case 0x0000: p3d_matrix_matrix_mul(state, buffer, psize); break;
2217         case 0x0810: p3d_matrix_vector_mul(state, buffer, psize); break;
2218         case 0x1010: p3d_vector_matrix_mul(state, buffer, psize); break;
2219         case 0x4400: p3d_scaling_set(state, buffer, psize); break;
2220         case 0x8000: p3d_render(state, buffer, psize, false); break;
2221         case 0x8080: p3d_render(state, buffer, psize, true); break;
2222         case 0xc000: p3d_flush(state, buffer, psize); break;
2223         default:
2224            if(0)
2225            {
2226               logerror("p3d - [%04x] %04x", h1, h);
2227               for(int i=0; i<psize; i++)
2228                  logerror(" %04x", buffer[i]);
2229               logerror("\n");
2230            }
2231            break;
21802232      }
2181      }
21822233   }
21832234}
21842235
21852236READ32_MEMBER(namcos23_state::p3d_r)
21862237{
2187   switch(offset) {
2188   case 0xa: return 1; // Busy flag
2238   switch (offset)
2239   {
2240      case 0xa:
2241         return 1; // Busy flag
21892242   }
21902243
21912244   logerror("p3d_r %02x @ %08x (%08x, %08x)\n", offset, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
r18691r18692
21942247
21952248WRITE32_MEMBER(namcos23_state::p3d_w)
21962249{
2197   switch(offset) {
2198   case 0x7: COMBINE_DATA(&m_p3d_address); return;
2199   case 0x8: COMBINE_DATA(&m_p3d_size); return;
2200   case 0x9:
2201      if(data & 1)
2202         p3d_dma(space, m_p3d_address, m_p3d_size);
2203      return;
2250   switch (offset)
2251   {
2252      case 0x7:
2253         COMBINE_DATA(&m_p3d_address);
2254         break;
2255      case 0x8:
2256         COMBINE_DATA(&m_p3d_size);
2257         break;
2258      case 0x9:
2259         if (data & 1)
2260            p3d_dma(space, m_p3d_address, m_p3d_size);
2261         break;
2262      default:
2263         logerror("p3d_w %02x, %08x @ %08x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
2264         break;
22042265   }
2205   logerror("p3d_w %02x, %08x @ %08x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
22062266}
22072267
22082268static void render_apply_transform(INT32 xi, INT32 yi, INT32 zi, const namcos23_render_entry *re, poly_vertex &pv)
r18691r18692
22422302      return;
22432303   }
22442304
2245   while(adr < state->m_ptrom_limit) {
2305   while(adr < state->m_ptrom_limit)
2306   {
22462307      poly_vertex pv[15];
22472308
22482309      UINT32 type = state->m_ptrom[adr++];
r18691r18692
22612322      UINT32 light = 0;
22622323      UINT32 extptr = 0;
22632324
2264      if(lmode == 3) {
2325      if(lmode == 3)
2326      {
22652327         extptr = adr;
22662328         adr += ne;
2267      } else
2329      }
2330      else
22682331         light = state->m_ptrom[adr++];
22692332
22702333      float minz = FLT_MAX;
22712334      float maxz = FLT_MIN;
22722335
2273      for(int i=0; i<ne; i++) {
2336      for(int i=0; i<ne; i++)
2337      {
22742338         UINT32 v1 = state->m_ptrom[adr++];
22752339         UINT32 v2 = state->m_ptrom[adr++];
22762340         UINT32 v3 = state->m_ptrom[adr++];
r18691r18692
22842348         if(pv[i].p[0] < minz)
22852349            minz = pv[i].p[0];
22862350
2287         switch(lmode) {
2351         switch(lmode)
2352         {
22882353         case 0: case 1:
22892354            pv[i].p[3] = ((light >> (8*(3-i))) & 0xff) / 64.0;
22902355            break;
r18691r18692
23142379
23152380      p->vertex_count = poly_zclip_if_less(ne, pv, p->pv, 4, 0.001f);
23162381
2317      if(p->vertex_count >= 3) {
2318         for(int i=0; i<p->vertex_count; i++) {
2382      if(p->vertex_count >= 3)
2383      {
2384         for(int i=0; i<p->vertex_count; i++)
2385         {
23192386            render_project(p->pv[i]);
23202387            float w = p->pv[i].p[0];
23212388            p->pv[i].p[1] *= w;
r18691r18692
23612428
23622429   const static rectangle scissor(0, 639, 0, 479);
23632430
2364   for(int i=0; i<render.poly_count; i++) {
2431   for(int i=0; i<render.poly_count; i++)
2432   {
23652433      const namcos23_poly_entry *p = render.poly_order[i];
23662434      namcos23_render_data *rd = (namcos23_render_data *)poly_get_extra_data(render.polymgr);
23672435      *rd = p->rd;
r18691r18692
23772445   const namcos23_render_entry *re = render.entries[!render.cur];
23782446
23792447   render.poly_count = 0;
2380   for(int i=0; i<render.count[!render.cur]; i++) {
2381      switch(re->type) {
2448   for(int i=0; i<render.count[!render.cur]; i++)
2449   {
2450      switch(re->type)
2451      {
23822452      case MODEL:
23832453         render_one_model(machine, re);
23842454         break;
r18691r18692
24202490{
24212491   render_t &render = m_render;
24222492
2423   if(!m_ctl_vbl_active) {
2493   if(!m_ctl_vbl_active)
2494   {
24242495      m_ctl_vbl_active = true;
24252496      device.execute().set_input_line(MIPS3_IRQ0, ASSERT_LINE);
24262497   }

Previous 199869 Revisions Next


© 1997-2024 The MAME Team