Previous 199869 Revisions Next

r21420 Sunday 24th February, 2013 at 15:57:47 UTC by Angelo Salese
Preliminary RGB ctrl
[src/mame/drivers]coolridr.c

trunk/src/mame/drivers/coolridr.c
r21419r21420
480480   void flush_pal_data( UINT16 offset );
481481   int m_gfx_index;
482482   int m_color_bank;
483   UINT32 m_rgb_ctrl[2];
483484
484485   osd_work_queue *    m_work_queue[2]; // work queue, one per screen
485486   static void *draw_tile_row_threaded(void *param, int threadid);
r21419r21420
17821783   }
17831784}
17841785
1785
17861786void coolridr_state::flush_pal_data( UINT16 offset )
17871787{
17881788   int r,g,b;
1789   int screen_type = (offset & 0x400) >> 10;
1790   int rgb_setting = m_rgb_ctrl[screen_type] & ~0x1f;
1791   int rgb_gradient = m_rgb_ctrl[screen_type] & 0x1f;
1792
17891793   r = ((m_h1_pal[offset] & 0x7c00) >> 10);
17901794   g = ((m_h1_pal[offset] & 0x03e0) >> 5);
17911795   b = ((m_h1_pal[offset] & 0x001f) >> 0);
1796   if(rgb_setting == 0x1240) /* fade-in / outs */
1797   {
1798      r -= rgb_gradient;
1799      g -= rgb_gradient;
1800      b -= rgb_gradient;
1801      if(r < 0) { r = 0; }
1802      if(g < 0) { g = 0; }
1803      if(b < 0) { b = 0; }
1804   }
1805   else if(rgb_setting == 0x920) /* at bike select, addition */
1806   {
1807      r += rgb_gradient;
1808      g += rgb_gradient;
1809      b += rgb_gradient;
1810      if(r > 0x1f) { r = 0x1f; }
1811      if(g > 0x1f) { g = 0x1f; }
1812      if(b > 0x1f) { b = 0x1f; }
1813   }
1814   else if(rgb_setting == 0x800) /* when you get hit TODO: algo might be different. */
1815   {
1816      g &= (0x1f - rgb_gradient);
1817      b &= (0x1f - rgb_gradient);
1818   }
1819   else if(rgb_gradient)
1820   {
1821      popmessage("%08x %08x",rgb_setting,rgb_gradient);
1822   }
1823
17921824   palette_set_color_rgb(machine(),offset,pal5bit(r),pal5bit(g),pal5bit(b));
17931825}
17941826
r21419r21420
18371869               printf("unk values to %02x dst %08x\n",cmd,dst);
18381870            dst &= 0x000fffff;
18391871
1840            /* TODO: might as well improve the dirty handling */
18411872            for(int i=0;i<size;i++)
18421873            {
18431874               m_h1_pcg[dst] = space.read_byte(src);
r21419r21420
18761907         case 0x24: /* unknown table */
18771908         case 0x30: /* screen 1 - 0x80 at boot, then 0x808080  */
18781909         case 0x34: /* screen 2 / */
1879         case 0x40: /* screen 1 - almost certainly RGB brightness (at least bits 4 - 0) */
1880         case 0x44: /* screen 2 / */
18811910         case 0x50: /* screen 1 - unknown */
18821911         case 0x54: /* screen 2 / */
18831912            //printf("%02x %08x\n",cmd,m_framebuffer_vram[(0+dma_index)/4]);
18841913            dma_index+=4;
18851914            break;
1915         case 0x40: /* screen 1 - almost certainly RGB brightness (at least bits 4 - 0) */
1916         case 0x44: /* screen 2 / */
1917            m_rgb_ctrl[(cmd & 4) >> 2] = m_framebuffer_vram[(0+dma_index)/4] & 0xffffff;
1918            for(int i=((cmd & 4) * 0x100);i<((cmd & 4) * 0x100)+0x400;i++)
1919               flush_pal_data( i );
1920            dma_index+=4;
1921            break;
18861922         default:
18871923            printf("%02x %08x\n",cmd,m_framebuffer_vram[(0+dma_index)/4]);
18881924            dma_index+=4;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team