Previous 199869 Revisions Next

r30788 Tuesday 3rd June, 2014 at 00:05:52 UTC by Carl
(mess) x68k: fix text layer clear and gfx buffer mode (nw)
[src/mess/drivers]x68k.c
[src/mess/video]x68k.c

trunk/src/mess/drivers/x68k.c
r30787r30788
107107      Dragon Buster: Text is black and unreadable. (Text layer actually covers it)
108108      Tetris:        Black dots over screen (text layer).
109109      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
112111
113112
114113    More detailed documentation at http://x68kdev.emuvibes.com/iomap.html - if you can stand broken english :)
r30787r30788
17121711   /* video hardware */
17131712   MCFG_SCREEN_ADD("screen", RASTER)
17141713   MCFG_SCREEN_REFRESH_RATE(55.45)
1715//   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
1716//  MCFG_GFXDECODE_ADD("gfxdecode", "palette", x68k)
17171714   MCFG_SCREEN_SIZE(1096, 568)  // inital setting
17181715   MCFG_SCREEN_VISIBLE_AREA(0, 767, 0, 511)
17191716   MCFG_SCREEN_UPDATE_DRIVER(x68k_state, screen_update_x68000)
1720//   MCFG_SCREEN_PALETTE("palette")
17211717
17221718   MCFG_GFXDECODE_ADD("gfxdecode", "pcgpalette", empty)
17231719
trunk/src/mess/video/x68k.c
r30787r30788
187187
188188   m_crtc.hblank = hstate;
189189   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
190194   if(m_crtc.vmultiple == 2) // 256-line (doublescan)
191195   {
192196      if(hstate == 1)
r30787r30788
441445      break;
442446   case 576:  // operation register
443447      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      }
449448      if(data & 0x02)  // high-speed graphic screen clear
450449      {
451450         memset(m_gvram,0,0x40000);
r30787r30788
506505   */
507506
508507   // 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
510509   {
511510      if(offset < 0x40000)
512511         COMBINE_DATA(m_gvram+offset);
r30787r30788
587586{
588587   UINT16 ret = 0;
589588
590   if(m_crtc.reg[20] & 0x08)  // G-VRAM set to buffer
589   if(m_crtc.reg[20] & 0x0800)  // G-VRAM set to buffer
591590      return m_gvram[offset];
592591
593592   switch(m_crtc.reg[20] & 0x0300)  // colour setup determines G-VRAM use
r30787r30788
825824                  {
826825                     if(ret)
827826                     {
828                        if(blend)
827                        if(blend && bitmap.pix16(scanline, pixel))
829828                           bitmap.pix16(scanline, pixel) = ((bitmap.pix16(scanline, pixel) >> 1) & 0x7bde) + ((pal[colour] >> 1) & 0x7bde) + 1;
830829                        else
831                           bitmap.pix16(scanline, pixel) = pal[colour] & 0xfffe;
830                           bitmap.pix16(scanline, pixel) = (pal[colour] & 0xfffe) + blend;
832831                     }
833832                     else
834833                        bitmap.pix16(scanline, pixel) = colour;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team