ATi Mach64: Override (S)VGA horizontal blanking calculation in accelerator CRTC mode.
This commit is contained in:
@@ -510,6 +510,7 @@ mach64_recalctimings(svga_t *svga)
|
||||
const mach64_t *mach64 = (mach64_t *) svga->priv;
|
||||
|
||||
if (((mach64->crtc_gen_cntl >> 24) & 3) == 3) {
|
||||
svga->hoverride = 1;
|
||||
svga->vtotal = (mach64->crtc_v_total_disp & 2047) + 1;
|
||||
svga->dispend = ((mach64->crtc_v_total_disp >> 16) & 2047) + 1;
|
||||
svga->htotal = (mach64->crtc_h_total_disp & 255) + 1;
|
||||
@@ -566,6 +567,7 @@ mach64_recalctimings(svga_t *svga)
|
||||
|
||||
svga->vram_display_mask = mach64->vram_mask;
|
||||
} else {
|
||||
svga->hoverride = 0;
|
||||
svga->vram_display_mask = (mach64->regs[0x36] & 0x01) ? mach64->vram_mask : 0x3ffff;
|
||||
}
|
||||
}
|
||||
|
@@ -766,17 +766,19 @@ svga_recalctimings(svga_t *svga)
|
||||
if (xga_active && (svga->xga != NULL))
|
||||
xga_recalctimings(svga);
|
||||
|
||||
svga->hblankend = (svga->hblankstart & ~(svga->hblank_end_len - 1)) | svga->hblank_end_val;
|
||||
if (svga->hblankend <= svga->hblankstart)
|
||||
svga->hblankend += svga->hblank_end_len;
|
||||
svga->hblankend += svga->hblank_ext;
|
||||
if (!svga->hoverride) {
|
||||
svga->hblankend = (svga->hblankstart & ~(svga->hblank_end_len - 1)) | svga->hblank_end_val;
|
||||
if (svga->hblankend <= svga->hblankstart)
|
||||
svga->hblankend += svga->hblank_end_len;
|
||||
svga->hblankend += svga->hblank_ext;
|
||||
|
||||
svga->hblank_sub = 0;
|
||||
if (svga->hblankend > svga->htotal) {
|
||||
svga->hblankend &= (svga->hblank_end_len - 1);
|
||||
svga->hblank_sub = svga->hblankend + svga->hblank_overscan;
|
||||
svga->hblank_sub = 0;
|
||||
if (svga->hblankend > svga->htotal) {
|
||||
svga->hblankend &= (svga->hblank_end_len - 1);
|
||||
svga->hblank_sub = svga->hblankend + svga->hblank_overscan;
|
||||
|
||||
svga->hdisp -= (svga->hblank_sub * svga->dots_per_clock);
|
||||
svga->hdisp -= (svga->hblank_sub * svga->dots_per_clock);
|
||||
}
|
||||
}
|
||||
|
||||
if (svga->hdisp >= 2048)
|
||||
|
Reference in New Issue
Block a user