Previous 199869 Revisions Next

r20471 Friday 25th January, 2013 at 20:12:20 UTC by hap
cleanup: class m_m to m_
[src/mame/drivers]namcos22.c
[src/mame/includes]namcos22.h
[src/mame/video]namcos22.c

trunk/src/mame/drivers/namcos22.c
r20470r20471
13621362
13631363READ16_MEMBER(namcos22_state::pdp_status_r)
13641364{
1365   return m_mMasterBIOZ;
1365   return m_MasterBIOZ;
13661366} /* pdp_status_r */
13671367
13681368void namcos22_state::WriteToPointRAM(offs_t offs, UINT32 data )
13691369{
13701370   offs &= 0xffffff; /* 24 bit addressing */
1371   if( m_mbSuperSystem22 )
1371   if( m_bSuperSystem22 )
13721372   {
13731373      if( offs>=0xf80000 && offs<=0xf9ffff )
1374         m_mpPointRAM[offs-0xf80000] = data & 0x00ffffff;
1374         m_pPointRAM[offs-0xf80000] = data & 0x00ffffff;
13751375   }
13761376   else
13771377   {
13781378      if( offs>=0xf00000 && offs<=0xf1ffff )
1379         m_mpPointRAM[offs-0xf00000] = data & 0x00ffffff;
1379         m_pPointRAM[offs-0xf00000] = data & 0x00ffffff;
13801380   }
13811381} /* WriteToPointRAM */
13821382
r20470r20471
13941394READ16_MEMBER(namcos22_state::pdp_begin_r)
13951395{
13961396   /* this feature appears to be only used on Super System22 hardware */
1397   if( m_mbSuperSystem22 )
1397   if( m_bSuperSystem22 )
13981398   {
13991399      UINT16 offs = m_polygonram[0x20000/4-1];
1400      m_mMasterBIOZ = 1;
1400      m_MasterBIOZ = 1;
14011401      for(;;)
14021402      {
14031403         UINT16 start = offs;
r20470r20471
14951495            return 0;
14961496         }
14971497      } /* for(;;) */
1498   } /* m_mbSuperSystem22 */
1498   } /* m_bSuperSystem22 */
14991499   return 0;
15001500} /* pdp_begin_r */
15011501
15021502READ16_MEMBER(namcos22_state::slave_external_ram_r)
15031503{
1504   return m_mpSlaveExternalRAM[offset];
1504   return m_pSlaveExternalRAM[offset];
15051505}
15061506
15071507WRITE16_MEMBER(namcos22_state::slave_external_ram_w)
15081508{
1509   COMBINE_DATA( &m_mpSlaveExternalRAM[offset] );
1509   COMBINE_DATA( &m_pSlaveExternalRAM[offset] );
15101510}
15111511
15121512static void HaltSlaveDSP( running_machine &machine )
r20470r20471
15401540
15411541WRITE16_MEMBER(namcos22_state::point_ram_idx_w)
15421542{
1543   m_mPointAddr<<=16;
1544   m_mPointAddr |= data;
1543   m_PointAddr<<=16;
1544   m_PointAddr |= data;
15451545}
15461546
15471547WRITE16_MEMBER(namcos22_state::point_ram_loword_iw)
15481548{
1549   m_mPointData |= data;
1550   WriteToPointRAM(m_mPointAddr++, m_mPointData );
1549   m_PointData |= data;
1550   WriteToPointRAM(m_PointAddr++, m_PointData );
15511551}
15521552
15531553WRITE16_MEMBER(namcos22_state::point_ram_hiword_w)
15541554{
1555   m_mPointData = (data<<16);
1555   m_PointData = (data<<16);
15561556}
15571557
15581558READ16_MEMBER(namcos22_state::point_ram_loword_r)
15591559{
1560   return namcos22_point_rom_r(machine(), m_mPointAddr)&0xffff;
1560   return namcos22_point_rom_r(machine(), m_PointAddr)&0xffff;
15611561}
15621562
15631563READ16_MEMBER(namcos22_state::point_ram_hiword_ir)
15641564{
1565   return namcos22_point_rom_r(machine(), m_mPointAddr++)>>16;
1565   return namcos22_point_rom_r(machine(), m_PointAddr++)>>16;
15661566}
15671567
15681568WRITE16_MEMBER(namcos22_state::dsp_unk2_w)
r20470r20471
15851585
15861586READ16_MEMBER(namcos22_state::dsp_unk_port3_r)
15871587{
1588   m_mMasterBIOZ = 0;
1589   m_mDspUploadState = eDSP_UPLOAD_READY;
1588   m_MasterBIOZ = 0;
1589   m_DspUploadState = eDSP_UPLOAD_READY;
15901590   return 0;
15911591}
15921592
15931593WRITE16_MEMBER(namcos22_state::upload_code_to_slave_dsp_w)
15941594{
1595   switch( m_mDspUploadState )
1595   switch( m_DspUploadState )
15961596   {
15971597   case eDSP_UPLOAD_READY:
15981598      logerror( "UPLOAD_READY; cmd = 0x%x\n", data );
r20470r20471
16021602            HaltSlaveDSP(machine());
16031603            break;
16041604         case 1:
1605            m_mDspUploadState = eDSP_UPLOAD_DEST;
1605            m_DspUploadState = eDSP_UPLOAD_DEST;
16061606            break;
16071607         case 2:
16081608            /* custom IC poke */
r20470r20471
16241624      break;
16251625
16261626   case eDSP_UPLOAD_DEST:
1627      m_mUploadDestIdx = data;
1628      m_mDspUploadState = eDSP_UPLOAD_DATA;
1627      m_UploadDestIdx = data;
1628      m_DspUploadState = eDSP_UPLOAD_DATA;
16291629      break;
16301630
16311631   case eDSP_UPLOAD_DATA:
1632      m_mpSlaveExternalRAM[m_mUploadDestIdx&0x1fff] = data;
1633      m_mUploadDestIdx++;
1632      m_pSlaveExternalRAM[m_UploadDestIdx&0x1fff] = data;
1633      m_UploadDestIdx++;
16341634      break;
16351635
16361636   default:
r20470r20471
16611661
16621662READ16_MEMBER(namcos22_state::master_external_ram_r)
16631663{
1664   return m_mpMasterExternalRAM[offset];
1664   return m_pMasterExternalRAM[offset];
16651665}
16661666
16671667WRITE16_MEMBER(namcos22_state::master_external_ram_w)
16681668{
1669   COMBINE_DATA( &m_mpMasterExternalRAM[offset] );
1669   COMBINE_DATA( &m_pMasterExternalRAM[offset] );
16701670}
16711671
16721672WRITE16_MEMBER(namcos22_state::slave_serial_io_w)
16731673{
1674   m_mSerialDataSlaveToMasterNext = data;
1674   m_SerialDataSlaveToMasterNext = data;
16751675   logerror( "slave_serial_io_w(%04x)\n", data );
16761676}
16771677
16781678READ16_MEMBER(namcos22_state::master_serial_io_r)
16791679{
16801680   logerror( "master_serial_io_r() == %04x\n",
1681      m_mSerialDataSlaveToMasterCurrent );
1682   return m_mSerialDataSlaveToMasterCurrent;
1681      m_SerialDataSlaveToMasterCurrent );
1682   return m_SerialDataSlaveToMasterCurrent;
16831683}
16841684
16851685TIMER_DEVICE_CALLBACK_MEMBER(namcos22_state::dsp_master_serial_irq)
16861686{
16871687   int scanline = param;
16881688
1689   if( m_mbEnableDspIrqs )
1689   if( m_bEnableDspIrqs )
16901690   {
1691      m_mSerialDataSlaveToMasterCurrent = m_mSerialDataSlaveToMasterNext;
1691      m_SerialDataSlaveToMasterCurrent = m_SerialDataSlaveToMasterNext;
16921692
16931693      if(scanline == 480)
16941694         m_master->set_input_line(TMS32025_INT0, HOLD_LINE);
r20470r20471
17041704{
17051705   int scanline = param;
17061706
1707   if( m_mbEnableDspIrqs )
1707   if( m_bEnableDspIrqs )
17081708   {
17091709      if((scanline % 2) == 0)
17101710      {
r20470r20471
17611761 */
17621762WRITE16_MEMBER(namcos22_state::dsp_unk8_w)
17631763{
1764   m_mRenderBufSize = 0;
1764   m_RenderBufSize = 0;
17651765}
17661766
17671767WRITE16_MEMBER(namcos22_state::master_render_device_w)
17681768{
1769   if( m_mRenderBufSize<MAX_RENDER_CMD_SEQ )
1769   if( m_RenderBufSize<MAX_RENDER_CMD_SEQ )
17701770   {
1771      m_mRenderBufData[m_mRenderBufSize++] = data;
1772      if( m_mRenderBufSize == MAX_RENDER_CMD_SEQ )
1771      m_RenderBufData[m_RenderBufSize++] = data;
1772      if( m_RenderBufSize == MAX_RENDER_CMD_SEQ )
17731773      {
1774         namcos22_draw_direct_poly( machine(), m_mRenderBufData );
1774         namcos22_draw_direct_poly( machine(), m_RenderBufData );
17751775      }
17761776   }
17771777}
r20470r20471
21462146            m_master->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); /* master DSP */
21472147            m_slave->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); /* slave DSP */
21482148            namcos22_enable_slave_simulation(machine(), 0);
2149            m_mbEnableDspIrqs = 0;
2149            m_bEnableDspIrqs = 0;
21502150         }
21512151         else if( newreg == 1 )
21522152         { /* enable dsp and rendering subsystem */
21532153            m_master->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
21542154            namcos22_enable_slave_simulation(machine(), 1);
2155            m_mbEnableDspIrqs = 1;
2155            m_bEnableDspIrqs = 1;
21562156         }
21572157         else if( newreg == 0xff )
21582158         { /* used to upload game-specific code to master/slave dsps */
21592159            m_master->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
2160            m_mbEnableDspIrqs = 0;
2160            m_bEnableDspIrqs = 0;
21612161         }
21622162      }
21632163   }
r20470r20471
22742274            m_master->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); /* master DSP */
22752275            m_slave->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); /* slave DSP */
22762276            namcos22_enable_slave_simulation(machine(), 0);
2277            m_mbEnableDspIrqs = 0;
2277            m_bEnableDspIrqs = 0;
22782278         }
22792279         else if( newreg == 1 )
22802280         { /* enable dsp and rendering subsystem */
22812281            m_master->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
22822282            namcos22_enable_slave_simulation(machine(), 1);
2283            m_mbEnableDspIrqs = 1;
2283            m_bEnableDspIrqs = 1;
22842284         }
22852285         else if( newreg == 0xff )
22862286         { /* used to upload game-specific code to master/slave dsps */
22872287            m_master->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
2288            m_mbEnableDspIrqs = 0;
2288            m_bEnableDspIrqs = 0;
22892289         }
22902290      }
22912291   }
r20470r20471
24032403 */
24042404READ32_MEMBER(namcos22_state::namcos22_portbit_r)
24052405{
2406   UINT32 data = m_mSys22PortBits;
2407   m_mSys22PortBits>>=1;
2406   UINT32 data = m_Sys22PortBits;
2407   m_Sys22PortBits>>=1;
24082408   return data&0x10001;
24092409}
24102410WRITE32_MEMBER(namcos22_state::namcos22_portbit_w)
24112411{
24122412   unsigned dat50000008 = AnalogAsDigital(machine());
24132413   unsigned dat5000000a = 0xffff;
2414   m_mSys22PortBits = (dat50000008<<16)|dat5000000a;
2414   m_Sys22PortBits = (dat50000008<<16)|dat5000000a;
24152415}
24162416
24172417READ32_MEMBER(namcos22_state::namcos22_dipswitch_r)
r20470r20471
24622462
24632463READ32_MEMBER(namcos22_state::alpinesa_prot_r)
24642464{
2465   return m_mAlpineSurferProtData;
2465   return m_AlpineSurferProtData;
24662466} /* alpinesa_prot_r */
24672467
24682468WRITE32_MEMBER(namcos22_state::alpinesa_prot_w)
r20470r20471
24702470   switch( data )
24712471   {
24722472      case 0:
2473         m_mAlpineSurferProtData = 0;
2473         m_AlpineSurferProtData = 0;
24742474         break;
24752475      case 1:
2476         m_mAlpineSurferProtData = 1;
2476         m_AlpineSurferProtData = 1;
24772477         break;
24782478      case 3:
2479         m_mAlpineSurferProtData = 2;
2479         m_AlpineSurferProtData = 2;
24802480         break;
24812481      default:
24822482         break;
r20470r20471
56885688   state->m_old_coin_state = 0;
56895689   state->m_credits1 = state->m_credits2 = 0;
56905690
5691   state->m_mpPointRAM = auto_alloc_array(machine, UINT32, 0x20000);
5691   state->m_pPointRAM = auto_alloc_array(machine, UINT32, 0x20000);
56925692}
56935693
56945694static void alpine_init_common( running_machine &machine, int game_type )
trunk/src/mame/video/namcos22.c
r20470r20471
151151      strcat(msg1,msg2);
152152   }
153153   if (1) // + other non-super regs
154   if (!state->m_mbSuperSystem22)
154   if (!state->m_bSuperSystem22)
155155   {
156156      strcat(msg1,"\n");
157157      for (i=8;i<=0x20;i+=8)
r20470r20471
163163   popmessage("%s",msg1);
164164#endif
165165
166   if( state->m_mbSuperSystem22 )
166   if( state->m_bSuperSystem22 )
167167   {
168168/*
169169           0 1 2 3  4 5 6 7  8 9 a b  c d e f 10       14       18       1c
r20470r20471
330330INLINE unsigned texel( namcos22_state *state, unsigned x, unsigned y )
331331{
332332   unsigned offs = ((y&0xfff0)<<4)|((x&0xff0)>>4);
333   unsigned tile = state->m_mpTextureTileMap16[offs];
334   return state->m_mpTextureTileData[(tile<<8)|state->m_mXYAttrToPixel[state->m_mpTextureTileMapAttr[offs]][x&0xf][y&0xf]];
333   unsigned tile = state->m_pTextureTileMap16[offs];
334   return state->m_pTextureTileData[(tile<<8)|state->m_XYAttrToPixel[state->m_pTextureTileMapAttr[offs]][x&0xf][y&0xf]];
335335} /* texel */
336336
337337
r20470r20471
415415   // slight differences between super and non-super, do the branch here for optimization
416416   // normal: 1 fader, no alpha, shading after fog
417417   // super:  2 faders, alpha, shading before fog
418   if (state->m_mbSuperSystem22)
418   if (state->m_bSuperSystem22)
419419   {
420420      for( x=extent->startx; x<extent->stopx; x++ )
421421      {
r20470r20471
530530   extra->flags = flags;
531531   extra->cz_adjust = cz_adjust;
532532   extra->cmode = cmode;
533   extra->prioverchar = (state->m_mbSuperSystem22 << 1) | ((cmode & 7) == 1);
533   extra->prioverchar = (state->m_bSuperSystem22 << 1) | ((cmode & 7) == 1);
534534
535535   /* non-direct case: project and z-clip */
536536   if (!direct)
r20470r20471
576576      }
577577   }
578578
579   if( state->m_mbSuperSystem22 )
579   if( state->m_bSuperSystem22 )
580580   {
581581      // global fade
582582      if (mixer.flags&1)
r20470r20471
840840{
841841   namcos22_state *state = machine.driver_data<namcos22_state>();
842842   int x,y;
843   if( state->m_mbSuperSystem22 )
843   if( state->m_bSuperSystem22 )
844844   { /* super system 22 */
845845      const UINT8 *rlut = (const UINT8 *)&state->m_gamma[0x100/4];
846846      const UINT8 *glut = (const UINT8 *)&state->m_gamma[0x200/4];
r20470r20471
11941194GetPolyData( namcos22_state *state, INT32 addr )
11951195{
11961196   UINT32 result;
1197   if( addr<0 || addr>=state->m_mPtRomSize )
1197   if( addr<0 || addr>=state->m_PtRomSize )
11981198   {
11991199      // point ram, only used in ram test?
1200      if( state->m_mbSuperSystem22 )
1200      if( state->m_bSuperSystem22 )
12011201      {
12021202         if( addr>=0xf80000 && addr<=0xf9ffff )
1203            result = state->m_mpPointRAM[addr-0xf80000];
1203            result = state->m_pPointRAM[addr-0xf80000];
12041204         else return -1;
12051205      }
12061206      else
12071207      {
12081208         if( addr>=0xf00000 && addr<=0xf1ffff )
1209            result = state->m_mpPointRAM[addr-0xf00000];
1209            result = state->m_pPointRAM[addr-0xf00000];
12101210         else return -1;
12111211      }
12121212   }
12131213   else
12141214   {
1215      result = (state->m_mpPolyH[addr]<<16)|(state->m_mpPolyM[addr]<<8)|state->m_mpPolyL[addr];
1215      result = (state->m_pPolyH[addr]<<16)|(state->m_pPolyM[addr]<<8)|state->m_pPolyL[addr];
12161216   }
12171217   if( result&0x00800000 )
12181218      result |= 0xff000000; /* sign extend */
r20470r20471
13281328            if( attr&4 ) ix = 15-ix;
13291329            if( attr&2 ) iy = 15-iy;
13301330            if( attr&8 ){ temp = ix; ix = iy; iy = temp; }
1331            state->m_mXYAttrToPixel[attr][x][y] = (iy<<4)|ix;
1331            state->m_XYAttrToPixel[attr][x][y] = (iy<<4)|ix;
13321332         }
13331333      }
13341334   }
r20470r20471
13461346      case NAMCOS22_CYBER_COMMANDO:
13471347         for( i=0; i<0x100000; i++ )
13481348         {
1349            int tile = state->m_mpTextureTileMap16[i];
1350            int attr = state->m_mpTextureTileMapAttr[i];
1349            int tile = state->m_pTextureTileMap16[i];
1350            int attr = state->m_pTextureTileMapAttr[i];
13511351            if( (attr&0x1)==0 )
13521352            {
13531353               tile = (tile&0x3fff)|0x8000;
1354               state->m_mpTextureTileMap16[i] = tile;
1354               state->m_pTextureTileMap16[i] = tile;
13551355            }
13561356         }
13571357         break;
r20470r20471
13661366{
13671367   if (machine.video().skip_this_frame()) return;
13681368   namcos22_state *state = machine.driver_data<namcos22_state>();
1369   int polys_enabled = state->m_mbSuperSystem22 ? nthbyte(state->m_gamma,0x1f)&1 : 1;
1369   int polys_enabled = state->m_bSuperSystem22 ? nthbyte(state->m_gamma,0x1f)&1 : 1;
13701370   if (!polys_enabled) return;
13711371   /**
13721372   * word#0:
r20470r20471
13961396   UINT32 zsortvalue24 = ((pSource[1]&0xfff)<<12)|(pSource[0]&0xfff);
13971397   struct SceneNode *node = NewSceneNode(machine, zsortvalue24, eSCENENODE_QUAD3D);
13981398   int i, cztype = pSource[3]&3;
1399   if( state->m_mbSuperSystem22 )
1399   if( state->m_bSuperSystem22 )
14001400   {
14011401      cztype ^= 3; // ? not sure, but this makes testmode look like on a pcb (only 1 pcb checked)
14021402      node->data.quad3d.cmode       = (pSource[2]&0x00f0)>>4;
r20470r20471
14141414   for( i=0; i<4; i++ )
14151415   {
14161416      Poly3dVertex *p = &node->data.quad3d.v[i];
1417      if( state->m_mbSuperSystem22 )
1417      if( state->m_bSuperSystem22 )
14181418      {
14191419         p->u = pSource[0] >> 4;
14201420         p->v = pSource[1] >> 4;
r20470r20471
14351435            zf /= 2.0;
14361436            exponent++;
14371437         }
1438         if( state->m_mbSuperSystem22 )
1438         if( state->m_bSuperSystem22 )
14391439            p->z = zf;
14401440         else
14411441            p->z = 1.0f/zf;
r20470r20471
14751475      UINT8 *pUnpackedTileAttr = auto_alloc_array(machine, UINT8, 0x080000*2);
14761476      {
14771477         InitXYAttrToPixel(state);
1478         state->m_mpTextureTileMapAttr = pUnpackedTileAttr;
1478         state->m_pTextureTileMapAttr = pUnpackedTileAttr;
14791479         for( i=0; i<0x80000; i++ )
14801480         {
14811481            *pUnpackedTileAttr++ = (*pPackedTileAttr)>>4;
14821482            *pUnpackedTileAttr++ = (*pPackedTileAttr)&0xf;
14831483            pPackedTileAttr++;
14841484         }
1485         state->m_mpTextureTileMap16 = (UINT16 *)pTilemapROM;
1486         state->m_mpTextureTileData = (UINT8 *)pTextureROM;
1485         state->m_pTextureTileMap16 = (UINT16 *)pTilemapROM;
1486         state->m_pTextureTileData = (UINT8 *)pTextureROM;
14871487         PatchTexture(state);
14881488      }
14891489   }
r20470r20471
20852085   state->m_bgtilemap->set_scrolly(0, scroll_y & 0x3ff );
20862086   state->m_bgtilemap->set_palette_offset(mixer.palBase*256 );
20872087
2088   if (state->m_mbSuperSystem22)
2088   if (state->m_bSuperSystem22)
20892089   {
20902090      state->m_bgtilemap->draw(*state->m_mix_bitmap, cliprect, 0, 4, 4);
20912091      namcos22s_mix_textlayer(machine, bitmap, cliprect, 4);
r20470r20471
21562156      int packetFormat )
21572157{
21582158   namcos22_state *state = machine.driver_data<namcos22_state>();
2159   int absolutePriority = state->m_mAbsolutePriority;
2159   int absolutePriority = state->m_AbsolutePriority;
21602160   INT32 zsortvalue24;
21612161   float zmin = 0.0f;
21622162   float zmax = 0.0f;
r20470r20471
21962196      if( i==0 || pVerTex->z > zmax ) zmax = pVerTex->z;
21972197      if( i==0 || pVerTex->z < zmin ) zmin = pVerTex->z;
21982198
2199      if( state->m_mLitSurfaceCount )
2199      if( state->m_LitSurfaceCount )
22002200      {
22012201         // lighting (prelim)
2202         bri = state->m_mLitSurfaceInfo[state->m_mLitSurfaceIndex%state->m_mLitSurfaceCount];
2203         if( state->m_mSurfaceNormalFormat == 0x6666 )
2202         bri = state->m_LitSurfaceInfo[state->m_LitSurfaceIndex%state->m_LitSurfaceCount];
2203         if( state->m_SurfaceNormalFormat == 0x6666 )
22042204         {
22052205            if( i==3 )
2206               state->m_mLitSurfaceIndex++;
2206               state->m_LitSurfaceIndex++;
22072207         }
2208         else if( state->m_mSurfaceNormalFormat == 0x4000 )
2209            state->m_mLitSurfaceIndex++;
2208         else if( state->m_SurfaceNormalFormat == 0x4000 )
2209            state->m_LitSurfaceIndex++;
22102210         else
2211            logerror( "unknown normal format: 0x%x\n", state->m_mSurfaceNormalFormat );
2211            logerror( "unknown normal format: 0x%x\n", state->m_SurfaceNormalFormat );
22122212      }
22132213      else if( packetFormat & 0x40 )
22142214      {
r20470r20471
22552255      absolutePriority += (polygonShiftValue22&0x1c0000)>>18;
22562256   }
22572257
2258   if( state->m_mObjectShiftValue22 & 0x200000 )
2259      zsortvalue24 = state->m_mObjectShiftValue22 & 0x1fffff;
2258   if( state->m_ObjectShiftValue22 & 0x200000 )
2259      zsortvalue24 = state->m_ObjectShiftValue22 & 0x1fffff;
22602260   else
22612261   {
2262      zsortvalue24 += Signed18( state->m_mObjectShiftValue22 );
2263      absolutePriority += (state->m_mObjectShiftValue22&0x1c0000)>>18;
2262      zsortvalue24 += Signed18( state->m_ObjectShiftValue22 );
2263      absolutePriority += (state->m_ObjectShiftValue22&0x1c0000)>>18;
22642264   }
22652265
22662266   if (zsortvalue24 < 0) zsortvalue24 = 0;
r20470r20471
23102310      dotproduct = nx*mCamera.lx + ny*mCamera.ly + nz*mCamera.lz;
23112311      if( dotproduct<0.0f )
23122312         dotproduct = 0.0f;
2313      state->m_mLitSurfaceInfo[state->m_mLitSurfaceCount++] = mCamera.ambient + mCamera.power*dotproduct;
2313      state->m_LitSurfaceInfo[state->m_LitSurfaceCount++] = mCamera.ambient + mCamera.power*dotproduct;
23142314   }
23152315} /* RegisterNormals */
23162316
r20470r20471
23812381            000000  000000  007fff // normal vector
23822382            */
23832383//              numAdditionalNormals = GetPolyData(state, addr+2);
2384            state->m_mSurfaceNormalFormat = GetPolyData(state, addr+3);
2385            state->m_mLitSurfaceCount = 0;
2386            state->m_mLitSurfaceIndex = 0;
2384            state->m_SurfaceNormalFormat = GetPolyData(state, addr+3);
2385            state->m_LitSurfaceCount = 0;
2386            state->m_LitSurfaceIndex = 0;
23872387            RegisterNormals( state, addr+4, m );
23882388            break;
23892389
r20470r20471
24102410{
24112411   namcos22_state *state = machine.driver_data<namcos22_state>();
24122412   unsigned addr1 = GetPolyData(state, code);
2413   state->m_mLitSurfaceCount = 0;
2414   state->m_mLitSurfaceIndex = 0;
2413   state->m_LitSurfaceCount = 0;
2414   state->m_LitSurfaceIndex = 0;
24152415   for(;;)
24162416   {
24172417      INT32 addr2 = GetPolyData(state, addr1++);
r20470r20471
25122512   mCamera.ly       = DSP_FIXED_TO_FLOAT(pSource[0x3]);
25132513   mCamera.lz       = DSP_FIXED_TO_FLOAT(pSource[0x4]);
25142514
2515   state->m_mAbsolutePriority = pSource[0x3]>>16;
2515   state->m_AbsolutePriority = pSource[0x3]>>16;
25162516   mCamera.vx      = (INT16)(pSource[5]>>16);
25172517   mCamera.vy      = (INT16)pSource[5];
25182518   mCamera.zoom    = DspFloatToNativeFloat(pSource[6]);
25192519   mCamera.vw      = DspFloatToNativeFloat(pSource[7])*mCamera.zoom;
25202520   mCamera.vh      = DspFloatToNativeFloat(pSource[9])*mCamera.zoom;
25212521
2522   state->m_mViewMatrix[0][0] = DSP_FIXED_TO_FLOAT(pSource[0x0c]);
2523   state->m_mViewMatrix[1][0] = DSP_FIXED_TO_FLOAT(pSource[0x0d]);
2524   state->m_mViewMatrix[2][0] = DSP_FIXED_TO_FLOAT(pSource[0x0e]);
2522   state->m_ViewMatrix[0][0] = DSP_FIXED_TO_FLOAT(pSource[0x0c]);
2523   state->m_ViewMatrix[1][0] = DSP_FIXED_TO_FLOAT(pSource[0x0d]);
2524   state->m_ViewMatrix[2][0] = DSP_FIXED_TO_FLOAT(pSource[0x0e]);
25252525
2526   state->m_mViewMatrix[0][1] = DSP_FIXED_TO_FLOAT(pSource[0x0f]);
2527   state->m_mViewMatrix[1][1] = DSP_FIXED_TO_FLOAT(pSource[0x10]);
2528   state->m_mViewMatrix[2][1] = DSP_FIXED_TO_FLOAT(pSource[0x11]);
2526   state->m_ViewMatrix[0][1] = DSP_FIXED_TO_FLOAT(pSource[0x0f]);
2527   state->m_ViewMatrix[1][1] = DSP_FIXED_TO_FLOAT(pSource[0x10]);
2528   state->m_ViewMatrix[2][1] = DSP_FIXED_TO_FLOAT(pSource[0x11]);
25292529
2530   state->m_mViewMatrix[0][2] = DSP_FIXED_TO_FLOAT(pSource[0x12]);
2531   state->m_mViewMatrix[1][2] = DSP_FIXED_TO_FLOAT(pSource[0x13]);
2532   state->m_mViewMatrix[2][2] = DSP_FIXED_TO_FLOAT(pSource[0x14]);
2530   state->m_ViewMatrix[0][2] = DSP_FIXED_TO_FLOAT(pSource[0x12]);
2531   state->m_ViewMatrix[1][2] = DSP_FIXED_TO_FLOAT(pSource[0x13]);
2532   state->m_ViewMatrix[2][2] = DSP_FIXED_TO_FLOAT(pSource[0x14]);
25332533
2534   TransformNormal( &mCamera.lx, &mCamera.ly, &mCamera.lz, state->m_mViewMatrix );
2534   TransformNormal( &mCamera.lx, &mCamera.ly, &mCamera.lz, state->m_ViewMatrix );
25352535} /* HandleBB0003 */
25362536
25372537static void
25382538Handle200002( running_machine &machine, bitmap_rgb32 &bitmap, const INT32 *pSource )
25392539{
25402540   namcos22_state *state = machine.driver_data<namcos22_state>();
2541   if( state->m_mPrimitiveID>=0x45 )
2541   if( state->m_PrimitiveID>=0x45 )
25422542   {
25432543      float m[4][4]; /* row major */
25442544
r20470r20471
25602560      m[3][1] = pSource[0xb]; /* ypos */
25612561      m[3][2] = pSource[0xc]; /* zpos */
25622562
2563      matrix3d_Multiply( m, state->m_mViewMatrix );
2564      BlitPolyObject( machine, bitmap, state->m_mPrimitiveID, m );
2563      matrix3d_Multiply( m, state->m_ViewMatrix );
2564      BlitPolyObject( machine, bitmap, state->m_PrimitiveID, m );
25652565   }
2566   else if( state->m_mPrimitiveID !=0 && state->m_mPrimitiveID !=2 )
2566   else if( state->m_PrimitiveID !=0 && state->m_PrimitiveID !=2 )
25672567   {
2568      logerror( "Handle200002:unk code=0x%x\n", state->m_mPrimitiveID );
2568      logerror( "Handle200002:unk code=0x%x\n", state->m_PrimitiveID );
25692569      // ridgerac title screen waving flag: 0x5
25702570   }
25712571} /* Handle200002 */
r20470r20471
25732573static void
25742574Handle300000( namcos22_state *state, const INT32 *pSource )
25752575{
2576   state->m_mViewMatrix[0][0] = DSP_FIXED_TO_FLOAT(pSource[1]);
2577   state->m_mViewMatrix[1][0] = DSP_FIXED_TO_FLOAT(pSource[2]);
2578   state->m_mViewMatrix[2][0] = DSP_FIXED_TO_FLOAT(pSource[3]);
2576   state->m_ViewMatrix[0][0] = DSP_FIXED_TO_FLOAT(pSource[1]);
2577   state->m_ViewMatrix[1][0] = DSP_FIXED_TO_FLOAT(pSource[2]);
2578   state->m_ViewMatrix[2][0] = DSP_FIXED_TO_FLOAT(pSource[3]);
25792579
2580   state->m_mViewMatrix[0][1] = DSP_FIXED_TO_FLOAT(pSource[4]);
2581   state->m_mViewMatrix[1][1] = DSP_FIXED_TO_FLOAT(pSource[5]);
2582   state->m_mViewMatrix[2][1] = DSP_FIXED_TO_FLOAT(pSource[6]);
2580   state->m_ViewMatrix[0][1] = DSP_FIXED_TO_FLOAT(pSource[4]);
2581   state->m_ViewMatrix[1][1] = DSP_FIXED_TO_FLOAT(pSource[5]);
2582   state->m_ViewMatrix[2][1] = DSP_FIXED_TO_FLOAT(pSource[6]);
25832583
2584   state->m_mViewMatrix[0][2] = DSP_FIXED_TO_FLOAT(pSource[7]);
2585   state->m_mViewMatrix[1][2] = DSP_FIXED_TO_FLOAT(pSource[8]);
2586   state->m_mViewMatrix[2][2] = DSP_FIXED_TO_FLOAT(pSource[9]);
2584   state->m_ViewMatrix[0][2] = DSP_FIXED_TO_FLOAT(pSource[7]);
2585   state->m_ViewMatrix[1][2] = DSP_FIXED_TO_FLOAT(pSource[8]);
2586   state->m_ViewMatrix[2][2] = DSP_FIXED_TO_FLOAT(pSource[9]);
25872587} /* Handle300000 */
25882588
25892589static void
r20470r20471
26002600      00000000 00000000 00000000
26012601   */
26022602   state->m_cz_adjust = (pSource[1] & 0x00800000) ? pSource[1] | 0xff000000 : pSource[1] & 0x00ffffff;
2603   state->m_mObjectShiftValue22 = pSource[2];
2603   state->m_ObjectShiftValue22 = pSource[2];
26042604} /* Handle233002 */
26052605
26062606static void
r20470r20471
26102610   const INT32 *pSource = 0x300 + (INT32 *)state->m_polygonram.target();
26112611   INT16 len;
26122612
2613   matrix3d_Identity( state->m_mViewMatrix );
2613   matrix3d_Identity( state->m_ViewMatrix );
26142614
2615   if( state->m_mbSuperSystem22 )
2615   if( state->m_bSuperSystem22 )
26162616   {
26172617      pSource += 4; /* FFFE 0400 */
26182618   }
r20470r20471
26242624   for(;;)
26252625   {
26262626      INT16 next;
2627      state->m_mPrimitiveID = *pSource++;
2627      state->m_PrimitiveID = *pSource++;
26282628      len  = (INT16)*pSource++;
26292629
26302630      switch( len )
r20470r20471
26732673DrawPolygons( running_machine &machine, bitmap_rgb32 &bitmap )
26742674{
26752675   namcos22_state *state = machine.driver_data<namcos22_state>();
2676   if( state->m_mbDSPisActive )
2676   if( state->m_bDSPisActive )
26772677   {
26782678      SimulateSlaveDSP( machine, bitmap );
26792679      poly_wait(state->m_poly, "DrawPolygons");
r20470r20471
26842684namcos22_enable_slave_simulation( running_machine &machine, int enable )
26852685{
26862686   namcos22_state *state = machine.driver_data<namcos22_state>();
2687   state->m_mbDSPisActive = enable;
2687   state->m_bDSPisActive = enable;
26882688}
26892689
26902690/*********************************************************************************************/
r20470r20471
27312731   m_bgtilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(namcos22_state::TextTilemapGetInfo),this),TILEMAP_SCAN_ROWS,16,16,64,64 );
27322732   m_bgtilemap->set_transparent_pen(0xf);
27332733
2734   m_mbDSPisActive = 0;
2734   m_bDSPisActive = 0;
27352735   memset( m_polygonram, 0xcc, 0x20000 );
27362736
27372737   for (code = 0; code < machine().gfx[GFX_TEXTURE_TILE]->elements(); code++)
r20470r20471
27392739
27402740   Prepare3dTexture(machine(), memregion("textilemap")->base(), machine().gfx[GFX_TEXTURE_TILE]->get_data(0) );
27412741   m_dirtypal = auto_alloc_array(machine(), UINT8, NAMCOS22_PALETTE_SIZE/4);
2742   m_mPtRomSize = memregion("pointrom")->bytes()/3;
2743   m_mpPolyL = memregion("pointrom")->base();
2744   m_mpPolyM = m_mpPolyL + m_mPtRomSize;
2745   m_mpPolyH = m_mpPolyM + m_mPtRomSize;
2742   m_PtRomSize = memregion("pointrom")->bytes()/3;
2743   m_pPolyL = memregion("pointrom")->base();
2744   m_pPolyM = m_pPolyL + m_PtRomSize;
2745   m_pPolyH = m_pPolyM + m_PtRomSize;
27462746
27472747   m_poly = poly_alloc(machine(), 4000, sizeof(poly_extra_data), 0);
27482748   machine().add_notifier(MACHINE_NOTIFY_RESET, machine_notify_delegate(FUNC(namcos22_reset), &machine()));
r20470r20471
27532753
27542754VIDEO_START_MEMBER(namcos22_state,namcos22)
27552755{
2756   m_mbSuperSystem22 = 0;
2756   m_bSuperSystem22 = 0;
27572757   VIDEO_START_CALL_MEMBER(common);
27582758}
27592759
27602760VIDEO_START_MEMBER(namcos22_state,namcos22s)
27612761{
2762   m_mbSuperSystem22 = 1;
2762   m_bSuperSystem22 = 1;
27632763
27642764   // init spotram
27652765   m_spotram = auto_alloc_array(machine(), UINT16, SPOTRAM_SIZE);
r20470r20471
29132913      break;
29142914
29152915   case 2:
2916      m_mUpperWordLatch = value>>16;
2916      m_UpperWordLatch = value>>16;
29172917      value &= 0xffff;
29182918      break;
29192919
r20470r20471
29402940
29412941   case 2:
29422942      COMBINE_DATA( &lo );
2943      hi = m_mUpperWordLatch;
2943      hi = m_UpperWordLatch;
29442944      break;
29452945
29462946   default:
trunk/src/mame/includes/namcos22.h
r20470r20471
4343      m_shareram(*this,"shareram"),
4444      m_system_controller(*this,"syscontrol"),
4545      m_nvmem(*this,"nvmem"),
46      m_mpSlaveExternalRAM(*this,"slaveextram"),
47      m_mpMasterExternalRAM(*this,"masterextram"),
46      m_pSlaveExternalRAM(*this,"slaveextram"),
47      m_pMasterExternalRAM(*this,"masterextram"),
4848      m_cgram(*this,"cgram"),
4949      m_textram(*this,"textram"),
5050      m_polygonram(*this,"polygonram"),
r20470r20471
6565   required_shared_ptr<UINT32> m_shareram;
6666   required_shared_ptr<UINT32> m_system_controller;
6767   required_shared_ptr<UINT32> m_nvmem;
68   required_shared_ptr<UINT16> m_mpSlaveExternalRAM;
69   required_shared_ptr<UINT16> m_mpMasterExternalRAM;
68   required_shared_ptr<UINT16> m_pSlaveExternalRAM;
69   required_shared_ptr<UINT16> m_pMasterExternalRAM;
7070   required_shared_ptr<UINT32> m_cgram;
7171   required_shared_ptr<UINT32> m_textram;
7272   required_shared_ptr<UINT32> m_polygonram;
r20470r20471
7777   required_shared_ptr<UINT32> m_tilemapattr;
7878   optional_shared_ptr<UINT32> m_czram;
7979
80   int m_mbEnableDspIrqs;
80   int m_bEnableDspIrqs;
8181   attotime m_ar_tb_reload[2];
8282   emu_timer *m_ar_tb_interrupt[2];
83   UINT16 m_mMasterBIOZ;
84   UINT32 *m_mpPointRAM;
83   UINT16 m_MasterBIOZ;
84   UINT32 *m_pPointRAM;
8585   UINT32 m_old_coin_state;
8686   UINT32 m_credits1;
8787   UINT32 m_credits2;
88   UINT32 m_mPointAddr;
89   UINT32 m_mPointData;
90   UINT16 m_mSerialDataSlaveToMasterNext;
91   UINT16 m_mSerialDataSlaveToMasterCurrent;
92   int m_mRenderBufSize;
93   UINT16 m_mRenderBufData[MAX_RENDER_CMD_SEQ];
94   UINT32 m_mSys22PortBits;
88   UINT32 m_PointAddr;
89   UINT32 m_PointData;
90   UINT16 m_SerialDataSlaveToMasterNext;
91   UINT16 m_SerialDataSlaveToMasterCurrent;
92   int m_RenderBufSize;
93   UINT16 m_RenderBufData[MAX_RENDER_CMD_SEQ];
94   UINT32 m_Sys22PortBits;
9595   int m_irq_state;
96   int m_mDspUploadState;
97   int m_mUploadDestIdx;
98   UINT32 m_mAlpineSurferProtData;
96   int m_DspUploadState;
97   int m_UploadDestIdx;
98   UINT32 m_AlpineSurferProtData;
9999   int m_motor_status;
100100   emu_timer *m_motor_timer;
101101   int m_p4;
102102   UINT16 m_su_82;
103103   UINT16 m_keycus_id;
104104   int m_gametype;
105   int m_mbSuperSystem22;
105   int m_bSuperSystem22;
106106   int m_chipselect;
107107   int m_spot_enable;
108108   int m_spot_read_address;
r20470r20471
113113   UINT32 m_cz_was_written[4];
114114   int m_cz_adjust;
115115   poly_manager *m_poly;
116   UINT16 *m_mpTextureTileMap16;
117   UINT8 *m_mpTextureTileMapAttr;
118   UINT8 *m_mpTextureTileData;
119   UINT8 m_mXYAttrToPixel[16][16][16];
116   UINT16 *m_pTextureTileMap16;
117   UINT8 *m_pTextureTileMapAttr;
118   UINT8 *m_pTextureTileData;
119   UINT8 m_XYAttrToPixel[16][16][16];
120120   UINT16 m_dspram_bank;
121   UINT16 m_mUpperWordLatch;
122   int m_mbDSPisActive;
123   INT32 m_mAbsolutePriority;
124   INT32 m_mObjectShiftValue22;
125   UINT16 m_mPrimitiveID;
126   float m_mViewMatrix[4][4];
127   UINT8 m_mLitSurfaceInfo[MAX_LIT_SURFACES];
128   INT32 m_mSurfaceNormalFormat;
129   unsigned m_mLitSurfaceCount;
130   unsigned m_mLitSurfaceIndex;
131   int m_mPtRomSize;
132   const UINT8 *m_mpPolyH;
133   const UINT8 *m_mpPolyM;
134   const UINT8 *m_mpPolyL;
121   UINT16 m_UpperWordLatch;
122   int m_bDSPisActive;
123   INT32 m_AbsolutePriority;
124   INT32 m_ObjectShiftValue22;
125   UINT16 m_PrimitiveID;
126   float m_ViewMatrix[4][4];
127   UINT8 m_LitSurfaceInfo[MAX_LIT_SURFACES];
128   INT32 m_SurfaceNormalFormat;
129   unsigned m_LitSurfaceCount;
130   unsigned m_LitSurfaceIndex;
131   int m_PtRomSize;
132   const UINT8 *m_pPolyH;
133   const UINT8 *m_pPolyM;
134   const UINT8 *m_pPolyL;
135135   UINT8 *m_dirtypal;
136136   bitmap_ind16 *m_mix_bitmap;
137137   tilemap_t *m_bgtilemap;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team