Fixed vblank start on S3 864/Trio64 - fixes 1280x1024.

This commit is contained in:
TomW 2014-03-22 15:37:36 +00:00
commit f51d8bead4
2 changed files with 11 additions and 10 deletions

View file

@ -277,10 +277,11 @@ void s3_recalctimings(svga_t *svga)
svga->hdisp_time += 0x100;
svga->hdisp += 0x100 * ((svga->seqregs[1] & 8) ? 16 : 8);
}
if (svga->crtc[0x5e] & 0x01) svga->vtotal += 0x400;
if (svga->crtc[0x5e] & 0x02) svga->dispend += 0x400;
if (svga->crtc[0x5e] & 0x10) svga->vsyncstart += 0x400;
if (svga->crtc[0x5e] & 0x40) svga->split += 0x400;
if (svga->crtc[0x5e] & 0x01) svga->vtotal += 0x400;
if (svga->crtc[0x5e] & 0x02) svga->dispend += 0x400;
if (svga->crtc[0x5e] & 0x04) svga->vblankstart += 0x400;
if (svga->crtc[0x5e] & 0x10) svga->vsyncstart += 0x400;
if (svga->crtc[0x5e] & 0x40) svga->split += 0x400;
if (svga->crtc[0x51] & 0x30) svga->rowoffset += (svga->crtc[0x51] & 0x30) << 4;
else if (svga->crtc[0x43] & 0x04) svga->rowoffset += 0x100;
if (!svga->rowoffset) svga->rowoffset = 256;

View file

@ -268,9 +268,6 @@ void svga_recalctimings(svga_t *svga)
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++;
@ -369,7 +366,10 @@ void svga_recalctimings(svga_t *svga)
svga->rowcount = svga->crtc[9] & 31;
if (svga->recalctimings_ex)
svga->recalctimings_ex(svga);
if (svga->vblankstart < svga->dispend)
svga->dispend = svga->vblankstart;
crtcconst = (svga->seqregs[1] & 1) ? (svga->clock * 8.0) : (svga->clock * 9.0);
disptime = svga->htotal;
@ -446,7 +446,7 @@ void svga_poll(void *p)
}
else
{
// pclog("VC %i ma %05X\n", vc, ma);
// pclog("VC %i ma %05X\n", svga->vc, svga->ma);
svga->vidtime += svga->dispontime;
// if (output) printf("Display on %f\n",vidtime);
@ -515,7 +515,7 @@ void svga_poll(void *p)
if (svga->vc == svga->vsyncstart)
{
int wx, wy;
// pclog("VC vsync %i %i\n", firstline_draw, lastline_draw);
// pclog("VC vsync %i %i\n", svga->firstline_draw, svga->lastline_draw);
svga->dispon=0;
svga->cgastat |= 8;
x = svga->hdisp;