SVGA now handles vblank start < vertical total. Fixes The Incredible Machine.
This commit is contained in:
parent
778c8f5fee
commit
4c4b3df51f
2 changed files with 9 additions and 1 deletions
|
|
@ -246,6 +246,7 @@ void svga_recalctimings(svga_t *svga)
|
|||
svga->dispend = svga->crtc[0x12];
|
||||
svga->vsyncstart = svga->crtc[0x10];
|
||||
svga->split = svga->crtc[0x18];
|
||||
svga->vblankstart = svga->crtc[0x15];
|
||||
|
||||
if (svga->crtc[7] & 1) svga->vtotal |= 0x100;
|
||||
if (svga->crtc[7] & 32) svga->vtotal |= 0x200;
|
||||
|
|
@ -262,6 +263,13 @@ void svga_recalctimings(svga_t *svga)
|
|||
if (svga->crtc[7] & 0x10) svga->split|=0x100;
|
||||
if (svga->crtc[9] & 0x40) svga->split|=0x200;
|
||||
svga->split++;
|
||||
|
||||
if (svga->crtc[7] & 0x08) svga->vblankstart |= 0x100;
|
||||
if (svga->crtc[9] & 0x20) svga->vblankstart |= 0x200;
|
||||
svga->vblankstart++;
|
||||
|
||||
if (svga->vblankstart < svga->dispend)
|
||||
svga->dispend = svga->vblankstart;
|
||||
|
||||
svga->hdisp = svga->crtc[1];
|
||||
svga->hdisp++;
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ typedef struct svga_t
|
|||
uint32_t pallook[256];
|
||||
PALETTE vgapal;
|
||||
|
||||
int vtotal, dispend, vsyncstart, split;
|
||||
int vtotal, dispend, vsyncstart, split, vblankstart;
|
||||
int hdisp, hdisp_old, htotal, hdisp_time, rowoffset;
|
||||
int lowres, interlace;
|
||||
int linedbl, rowcount;
|
||||
|
|
|
|||
Loading…
Reference in a new issue