Previous 199869 Revisions Next

r21215 Wednesday 20th February, 2013 at 16:46:25 UTC by David Haywood
further thoughts from Charles + some thoughts about the indirect LINE tables used by the main road draw blits
[src/mame/drivers]coolridr.c

trunk/src/mame/drivers/coolridr.c
r21214r21215
77
88    TODO:
99    - decode compressed GFX ROMs for "sprite" blitter (6,141,122 is the patent number)
10     http://www.google.com/patents/US6141122
1011    - DMA is still a bit of a mystery;
1112    - video emulation is pratically non-existant;
1213    - SCSP;
r21214r21215
322323Also the two indicator bits may have different polarities, maybe 0,0
323324is Type C instead of 1,1.
324325
326--- CORRECTION from Charles 20/02/13
327
328I was just playing around with decoding this morning, and now I feel
329certain the ordering is to take the 16-bit output of each of the 10
330ROMs at a given address and divide that 160-bit word into sixteen
33110-bit words.
332
333When you do this, you get some kind of animation at 0x3898E0 which is
334eight sequential frames of an object with a solid color fill in the
335background. Because the size is constant it may be all Type C pixels
336(e.g. no run-length) so that could be a good place to start with
337shuffling bits/addresses to see how to get a lot of $3xx pixels.
338
339There's a similar animation at 0x73CEC0, smaller object, 32 frames.
340
341I think the 'background' data behind the object in both cases might be
342a pen number that continuously increases, maybe for flashing effect as
343you cycle through the animation. Otherwise you'd expect the background
344pixels to be the same in each frame.
345
346I also wonder if a pixel value of 0000 (type A with run length=0)
347indicates a single dot since there are a lot of 0000 words.
348
349There may be some bit/byte/address swapping needed to still get valid
350output. And the tables may be encoded differently, there's a large one
351at 0xDE60.
352
353
354
325355*/
326356
327357
r21214r21215
784814               if (m_indirect_zoom_enable)
785815               {
786816                  // with this bit enabled m_blit10 is a look up to the zoom(?) value eg. 03f42600
817                  //UINT32 temp = space.read_dword(m_blit10);
818                  //printf("road type blit %08x %08x %08x %08x %08x %08x %04x %04x %04x %04x %08x %08x (TEMP %08x) %d %d\n", m_blit0, m_blit1, m_blit2, m_blit3, m_blit4, m_blit5, m_vCellCount, m_hCellCount, m_vZoom, m_hZoom, m_blit10, data, temp, m_vPosition, m_hPosition);
819               
820                  /* for the horizontal road during attract there are tables 0x480 bytes long (0x120 dwords) and the value passed points to the start of them */
821                  /* cell sizes for those are are 0011 (v) 0007 (h) with zoom factors of 0020 (half v) 0040 (normal h) */
822                  /* tables seem to be 2x 8-bit values, possibly zoom + linescroll, although ingame ones seem to be 2x16-bit (corrupt? more meaning) */
787823
788                  //printf("road type blit %08x %08x %08x %08x %08x %08x %04x %04x %04x %04x %08x %08x %d %d\n", m_blit0, m_blit1, m_blit2, m_blit3, m_blit4, m_blit5, m_vCellCount, m_hCellCount, m_vZoom, m_hZoom, m_blit10, data, m_vPosition, m_hPosition);
789824               }
790825
791826               
792827               bitmap_rgb32* drawbitmap;
793828
794               // guess, you can see the different sizes of bike cross from the left screen to the right where the attract text is
829               // 0x30 - 0x60 are definitely the left screen, 0x90 - 0xc0 are definitely the right screen.. the modes seem priority related
795830               if (m_blitterMode == 0x30 || m_blitterMode == 0x40 || m_blitterMode == 0x50 || m_blitterMode == 0x60)
796831                  drawbitmap = &m_temp_bitmap_sprites;
797832               else // 0x90, 0xa0, 0xb0, 0xc0

Previous 199869 Revisions Next


© 1997-2024 The MAME Team