trunk/src/mess/drivers/x68k.c
| r30787 | r30788 | |
| 107 | 107 | Dragon Buster: Text is black and unreadable. (Text layer actually covers it) |
| 108 | 108 | Tetris: Black dots over screen (text layer). |
| 109 | 109 | Parodius Da!: Black squares in areas. |
| 110 | | PacLand: Leftover garbage on title screen |
| 111 | | Akumajo Drac: no sfx starting on second stage (m68000 only, 030 is fine), text layer not being cleared properly |
| 110 | Akumajo Drac: no sfx starting on second stage (m68000 only, 030 is fine), simon sprite flickers |
| 112 | 111 | |
| 113 | 112 | |
| 114 | 113 | More detailed documentation at http://x68kdev.emuvibes.com/iomap.html - if you can stand broken english :) |
| r30787 | r30788 | |
| 1712 | 1711 | /* video hardware */ |
| 1713 | 1712 | MCFG_SCREEN_ADD("screen", RASTER) |
| 1714 | 1713 | MCFG_SCREEN_REFRESH_RATE(55.45) |
| 1715 | | // MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ |
| 1716 | | // MCFG_GFXDECODE_ADD("gfxdecode", "palette", x68k) |
| 1717 | 1714 | MCFG_SCREEN_SIZE(1096, 568) // inital setting |
| 1718 | 1715 | MCFG_SCREEN_VISIBLE_AREA(0, 767, 0, 511) |
| 1719 | 1716 | MCFG_SCREEN_UPDATE_DRIVER(x68k_state, screen_update_x68000) |
| 1720 | | // MCFG_SCREEN_PALETTE("palette") |
| 1721 | 1717 | |
| 1722 | 1718 | MCFG_GFXDECODE_ADD("gfxdecode", "pcgpalette", empty) |
| 1723 | 1719 | |
trunk/src/mess/video/x68k.c
| r30787 | r30788 | |
| 187 | 187 | |
| 188 | 188 | m_crtc.hblank = hstate; |
| 189 | 189 | m_mfpdev->i7_w(!m_crtc.hblank); |
| 190 | |
| 191 | if(m_crtc.operation & 8) // is this supposed to happen when the src or dest line is scanned? |
| 192 | x68k_crtc_text_copy((m_crtc.reg[22] & 0xff00) >> 8,(m_crtc.reg[22] & 0x00ff)); |
| 193 | |
| 190 | 194 | if(m_crtc.vmultiple == 2) // 256-line (doublescan) |
| 191 | 195 | { |
| 192 | 196 | if(hstate == 1) |
| r30787 | r30788 | |
| 441 | 445 | break; |
| 442 | 446 | case 576: // operation register |
| 443 | 447 | m_crtc.operation = data; |
| 444 | | if(data & 0x08) // text screen raster copy |
| 445 | | { |
| 446 | | x68k_crtc_text_copy((m_crtc.reg[22] & 0xff00) >> 8,(m_crtc.reg[22] & 0x00ff)); |
| 447 | | timer_set(attotime::from_msec(1), TIMER_X68K_CRTC_OPERATION_END, 0x02); // time taken to do operation is a complete guess. |
| 448 | | } |
| 449 | 448 | if(data & 0x02) // high-speed graphic screen clear |
| 450 | 449 | { |
| 451 | 450 | memset(m_gvram,0,0x40000); |
| r30787 | r30788 | |
| 506 | 505 | */ |
| 507 | 506 | |
| 508 | 507 | // handle different G-VRAM page setups |
| 509 | | if(m_crtc.reg[20] & 0x08) // G-VRAM set to buffer |
| 508 | if(m_crtc.reg[20] & 0x0800) // G-VRAM set to buffer |
| 510 | 509 | { |
| 511 | 510 | if(offset < 0x40000) |
| 512 | 511 | COMBINE_DATA(m_gvram+offset); |
| r30787 | r30788 | |
| 587 | 586 | { |
| 588 | 587 | UINT16 ret = 0; |
| 589 | 588 | |
| 590 | | if(m_crtc.reg[20] & 0x08) // G-VRAM set to buffer |
| 589 | if(m_crtc.reg[20] & 0x0800) // G-VRAM set to buffer |
| 591 | 590 | return m_gvram[offset]; |
| 592 | 591 | |
| 593 | 592 | switch(m_crtc.reg[20] & 0x0300) // colour setup determines G-VRAM use |
| r30787 | r30788 | |
| 825 | 824 | { |
| 826 | 825 | if(ret) |
| 827 | 826 | { |
| 828 | | if(blend) |
| 827 | if(blend && bitmap.pix16(scanline, pixel)) |
| 829 | 828 | bitmap.pix16(scanline, pixel) = ((bitmap.pix16(scanline, pixel) >> 1) & 0x7bde) + ((pal[colour] >> 1) & 0x7bde) + 1; |
| 830 | 829 | else |
| 831 | | bitmap.pix16(scanline, pixel) = pal[colour] & 0xfffe; |
| 830 | bitmap.pix16(scanline, pixel) = (pal[colour] & 0xfffe) + blend; |
| 832 | 831 | } |
| 833 | 832 | else |
| 834 | 833 | bitmap.pix16(scanline, pixel) = colour; |