Previous 199869 Revisions Next

r21932 Monday 18th March, 2013 at 09:45:14 UTC by David Haywood
deco_mlc - use extra clipping regs, improve doc
[src/mame/video]deco_mlc.c

trunk/src/mame/video/deco_mlc.c
r21931r21932
173173                  0x4000 - Y flip
174174                  0x2000 - Auto-flicker (display sprite only every other frame)
175175                  0x1000 - If set combine this 4bpp sprite & next one, into 8bpp sprite
176                  0x0800 - This is set ingame on Stadium Hero 96, on graphics which otherwise obscure the playfield?
177                  0x0400 - Use raster IRQ lookup table when drawing object
178                  0x0300 - Selects clipping window to use - and upper bits of raster select (stadhr96)
176                  0x0800 - upper clip bit (stadhr96 view of bases)
177                  0x0400 - Use raster IRQ lookup table when drawing object - or not? (OK for stadhr96, NOT enabled for avengrgs)
178                  0x0300 - lower clipping window to use (swapped) - and upper bits of raster select (stadhr96)
179179               0x0080 - seems to be both the lower bit of the raster select (stadhr96) AND the upper bit of colour / alpha (avngrgs?) - might depend on other bits?
180180                  0x007f - Colour/alpha shadow enable
181181          Word 2: 0x07ff - Y position
r21931r21932
227227      rasterMode = (mlc_spriteram[offs+1]>>10)&0x1;
228228
229229
230     
231      int unk_bit = (mlc_spriteram[offs+1]>>10)&0x2;
232      // just bail if this bit is set, although it might be clip window related and enable a clip window
233      // to hide all the sprites it covers
234      // this seem realistic because 2 of the upper 4 'clip windows' are usually set to invalid (off-screen)
235      // areas, and we currently have no bit to select them.
236      if (unk_bit)
237         continue;
238230
239231
240232     
241233      clipper = (mlc_spriteram[offs+1]>>8)&0x3;
234
242235      indx = mlc_spriteram[offs+0]&0x3fff;
243236      yscale = mlc_spriteram[offs+4]&0x3ff;
244237      xscale = mlc_spriteram[offs+5]&0x3ff;
r21931r21932
248241      however there are space for 8 clipping windows, where is the high bit? (Or is it ~0x400?) */
249242      clipper=((clipper&2)>>1)|((clipper&1)<<1); // Swap low two bits
250243
244
245     
246      int upperclip = (mlc_spriteram[offs+1]>>10)&0x2;
247      // this is used on some ingame gfx in stadhr96
248      // to clip the images of your guys on the bases
249      if (upperclip)
250         clipper |= 0x4;
251
252
253
251254      int min_y = m_mlc_clip_ram[(clipper*4)+0];
252255      int max_y = m_mlc_clip_ram[(clipper*4)+1];
253256

Previous 199869 Revisions Next


© 1997-2024 The MAME Team