Previous 199869 Revisions Next

r21355 Friday 22nd February, 2013 at 22:52:01 UTC by David Haywood
document where RGB framebuffer controls appear to be
[src/mame/drivers]coolridr.c

trunk/src/mame/drivers/coolridr.c
r21354r21355
12771277         printf("blitter mode with mask 0x0000f000\n");
12781278
12791279
1280
1281      //if (m_blitterMode<0x80)  printf("blitter set screen %d mode %02x addr? %04x\n", (data&0x00800000)>>23, ((data & 0x00ff0000)>>16)-0x30, data & 0x00000fff);
1282
12801283      // form 0xacMM-xxx   ac = fixed value for this mode?  MM = modes above.  -xxx = some kind of offset? but it doesn't increment for each blit like the textOffset / paletteOffset stuff, investigate
12811284
12821285   }
r21354r21355
14281431            copybitmap(m_screen2_bitmap, m_temp_bitmap_sprites2[i], 0, 0, 0, 0, visarea);
14291432            m_temp_bitmap_sprites2[i].fill(0, visarea);
14301433         }
1434
1435         //printf("frame\n");
14311436      }
14321437   }
14331438   else
r21354r21355
15051510      size = m_framebuffer_vram[(8+dma_index)/4];
15061511      type = (m_framebuffer_vram[(0+dma_index)/4] & 0xf0000000) >> 28;
15071512
1508      #if 0
1509      if(type == 0xc || type == 0xd || type == 0xe)
1510         printf("* %08x %08x %08x %08x\n",src,dst,size,type);
1511      else if(type != 0 && type != 0x4)
1512         printf("%08x %08x %08x %08x\n",src,dst,size,type);
1513      #endif
15141513
1515      if(type == 0x3 || type == 0x4)
1516      {
1517         //type 3 sets a DMA state->m_param, type 4 sets some kind of table? Skip it for now
1518         dma_index+=4;
1519         continue;
1520      }
15211514
1522      if(type == 0xc)
1515      switch (type)
15231516      {
1524         dst &= 0xfffff;
1517         case 0x0:
1518            end_dma_mark = 1; //end of DMA list
1519            break;
15251520
1526         dst |= 0x3000000; //to videoram, FIXME: unknown offset
1527         size*=2;
1528      }
1529      if(type == 0xd)
1530      {
1531         dst &= 0xfffff;
1521         default:
1522            // on startup
1523            //unhandled dma type 01 03e09b80
1524            //unhandled dma type 02 03e0dc00
1525            //unhandled dma type 02 07e0ee00
15321526
1533         dst |= 0x3d00000; //to charram, FIXME: unknown offset
1534         size*=2;
1535      }
1527            printf("unhandled dma type %02x %08x\n", type, src);
1528            dma_index+=4;
1529            break;
15361530
1537      if(type == 0xe)
1538      {
1539         dst &= 0xfffff;
1531         case 0x3:
1532            //type 3 sets a DMA state->m_param, type 4 sets some kind of table? Skip it for now
1533            /* per screen - on transitions */
1534            if (src & 0x04000000)
1535            {
1536               //printf("screen 2 unhandled dma type %02x %08x\n", type, src& ~0x04000000);
1537            }
1538            else
1539            {
1540               //printf("screen 1 unhandled dma type %02x %08x\n", type, src& ~0x04000000);
1541            }
1542           
1543            dma_index+=4;
1544            break;
15401545
1541         dst |= 0x3c00000; //to paletteram FIXME: unknown offset
1542         //size/=2;
1546         case 0x4:
1547            /* per screen - on transitions */
1548            /* some kind of brightness effect for the sprites? */
15431549
1544         // this is used when transfering palettes written by the blitter? maybe?
1545         //  it might be a better indication of where blitter command 0xe0 should REALLY write data (at 0x3e00000)...
1546         if((src & 0xff00000) == 0x3e00000)
1547         {
1548            src &= 0xfffff;
1549            src |= 0x3c00000;
1550         }
1551         //   return; //FIXME: kludge to avoid palette corruption
1552         //debugger_break(space.machine());
1553      }
1550            if (src & 0x04000000)
1551            {
1552               // screen 2...
1553               //printf("screen 2 unhandled dma type %02x %08x\n", type, src& ~0x04000000);
1554            }
1555            else
1556            {
1557               // screen 1
1558               //printf("screen 1 unhandled dma type %02x %08x\n", type, src& ~0x04000000);
1559            }
15541560
1555      if(type == 0xc || type == 0xd || type == 0xe)
1556      {
1557         for(s_i=0;s_i<size;s_i+=4)
1558         {
1559            space.write_dword(dst,space.read_dword(src));
1560            dst+=4;
1561            src+=4;
1562         }
1561            //type 3 sets a DMA state->m_param, type 4 sets some kind of table? Skip it for now
1562            dma_index+=4;
1563            break;
1564
1565         case 0xc:
1566            dst &= 0xfffff;
1567
1568            dst |= 0x3000000; //to videoram, FIXME: unknown offset
1569            size*=2;
1570
1571            for(s_i=0;s_i<size;s_i+=4)
1572            {
1573               space.write_dword(dst,space.read_dword(src));
1574               dst+=4;
1575               src+=4;
1576            }
1577            dma_index+=0xc;
1578            break;
1579
1580         case 0xd:
1581            dst &= 0xfffff;
1582
1583            dst |= 0x3d00000; //to charram, FIXME: unknown offset
1584            size*=2;
1585
1586            for(s_i=0;s_i<size;s_i+=4)
1587            {
1588               space.write_dword(dst,space.read_dword(src));
1589               dst+=4;
1590               src+=4;
1591            }
1592            dma_index+=0xc;
1593            break;
1594
1595         case 0xe:
1596            dst &= 0xfffff;
1597
1598            dst |= 0x3c00000; //to paletteram FIXME: unknown offset
1599            //size/=2;
1600
1601            // this is used when transfering palettes written by the blitter? maybe?
1602            //  it might be a better indication of where blitter command 0xe0 should REALLY write data (at 0x3e00000)...
1603            if((src & 0xff00000) == 0x3e00000)
1604            {
1605               src &= 0xfffff;
1606               src |= 0x3c00000;
1607            }
1608
1609            for(s_i=0;s_i<size;s_i+=4)
1610            {
1611               space.write_dword(dst,space.read_dword(src));
1612               dst+=4;
1613               src+=4;
1614            }
1615            dma_index+=0xc;
1616            break;
15631617      }
1564      else
1565      {
1566         //printf("%08x %08x %08x %08x\n",src,dst,size,type);
1567      }
15681618
1569      if(type == 0x00)
1570         end_dma_mark = 1; //end of DMA list
15711619
1572      dma_index+=0xc;
15731620
1621
15741622   }while(!end_dma_mark );
15751623}
15761624

Previous 199869 Revisions Next


© 1997-2024 The MAME Team