Previous 199869 Revisions Next

r21719 Friday 8th March, 2013 at 19:08:09 UTC by hap
small fix on sprite enable
[src/mame/video]namcos22.c

trunk/src/mame/video/namcos22.c
r21718r21719
16231623#endif
16241624   /*
16251625       0x980000:   00060000 00010000 02ff0000 000007ff
1626                      ^                                 enable bits, 7 = disable
1626                      ^                                 misc control
16271627                       ^^^^                             base
16281628                            ^^^^                        base + num sprites
16291629                                ^^^^     ^^^^           deltax
r21718r21719
16431643       additional sorting/color data for sprite at 0x9a0000
16441644   */
16451645
1646   /* 'enable' bits function:
1647       bit 0:      sprites on?
1646   /* misc control bits function:
1647       bit 0:      sprites on
16481648       bit 1:      ??? (always set, except in alpinr2b. it's not x-resolution)
16491649       bit 2:      y-resolution? (always set, except in cybrcycc)
1650       all bits set means off (aquajet) */
1651   int enable = spriteram32[0]>>16&5;
1650   */
1651   int sprites_on = (spriteram32[0]>>16 & 1) ? 0 : 1;
1652   int y_lowres = (spriteram32[0]>>16 & 4) ? 0 : 1;
16521653
1653   int y_lowres = (enable & 4) ? 0 : 1;
1654
16551654   int deltax = (spriteram32[1]&0xffff) + (spriteram32[2]&0xffff) + 0x2d;
16561655   int deltay = (spriteram32[3]>>16) + (0x2a >> y_lowres);
16571656
16581657   int base = spriteram32[0] & 0xffff; // alpinesa/alpinr2b
16591658   int num_sprites = ((spriteram32[1]>>16) - base) + 1;
16601659
1661   if( num_sprites > 0 && num_sprites < 0x400 && enable != 5 )
1660   if( sprites_on && num_sprites > 0 && num_sprites < 0x400 )
16621661   {
16631662      pSource = &spriteram32[0x04000/4 + base*4];
16641663      pPal    = &spriteram32[0x20000/4 + base*2];
r21718r21719
16701669   0x940000 -x------       sprite chip busy?
16711670   0x940018 xxxx----       clr.w   $940018.l
16721671
1673   0x940030 xxxxxxxx       0x0600000 - enable bits?
1672   0x940030 xxxxxxxx       0x0600000 - misc control
16741673   0x940034 xxxxxxxx       0x3070b0f
16751674
16761675   0x940040 xxxxxxxx       sprite attribute size             high bit means busy?
r21718r21719
16811680   0x940060..0x94007c      set#2
16821681   */
16831682
1683   sprites_on = (state->m_vics_control[0x30/4]>>24 & 1) ? 0 : 1;
1684   y_lowres = (state->m_vics_control[0x30/4]>>24 & 4) ? 0 : 1;
1685
16841686   // where do the games store the number of sprites to be processed by vics???
16851687   // the current default implementation (using spritelist size) is clearly wrong and causes problems in dirtdash and airco22b
16861688   num_sprites = state->m_vics_control[0x40/4] >> 4 & 0x1ff; // no +1
r21718r21719
16891691   if (state->m_gametype == NAMCOS22_DIRT_DASH)
16901692      num_sprites = (state->m_vics_data[(state->m_vics_control[0x48/4]&0x4000)/4] & 0xff) + 1;
16911693
1692   if( num_sprites > 0 )
1694   if( sprites_on && num_sprites > 0 )
16931695   {
16941696      pSource = &state->m_vics_data[(state->m_vics_control[0x48/4]&0xffff)/4];
16951697      pPal    = &state->m_vics_data[(state->m_vics_control[0x58/4]&0xffff)/4];
r21718r21719
17011703   // airco22b number of sprites for set#2 is stored in set#1 - it does not use set 1, or main set for sprites
17021704   if (state->m_gametype == NAMCOS22_AIR_COMBAT22)
17031705   {
1704      enable = state->m_vics_data[(state->m_vics_control[0x48/4]&0xffff)/4]>>16&5;
1705      if (enable != 5)
1706         num_sprites = (state->m_vics_data[(state->m_vics_control[0x48/4]&0xffff)/4+1]>>16)+1;
1707      else
1708         num_sprites = 0;
1706      sprites_on = (state->m_vics_data[(state->m_vics_control[0x48/4]&0xffff)/4]>>16&1) ? 0 : 1;
1707      num_sprites = (state->m_vics_data[(state->m_vics_control[0x48/4]&0xffff)/4+1]>>16)+1;
17091708   }
17101709
1711   if( num_sprites > 0 )
1710   if( sprites_on && num_sprites > 0 )
17121711   {
17131712      pSource = &state->m_vics_data[(state->m_vics_control[0x68/4]&0xffff)/4];
17141713      pPal    = &state->m_vics_data[(state->m_vics_control[0x78/4]&0xffff)/4];

Previous 199869 Revisions Next


© 1997-2024 The MAME Team