S3 Cards: Fix timings in some modes to account for double-clocking.

This commit is contained in:
OBattler
2025-08-11 13:34:58 +02:00
parent 3e147e8881
commit 42fa1dbe54

View File

@@ -3719,6 +3719,8 @@ s3_recalctimings(svga_t *svga)
case 1600:
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
svga->clock /= 2.0;
break;
default:
break;
}
@@ -3749,6 +3751,8 @@ s3_recalctimings(svga_t *svga)
case 1600:
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
svga->clock /= 2.0;
break;
default:
break;
}
@@ -3804,6 +3808,7 @@ s3_recalctimings(svga_t *svga)
/*SPEA specific drivers + its VBE RAM BIOS...*/
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
svga->clock /= 2.0;
}
break;
default:
@@ -3867,6 +3872,7 @@ s3_recalctimings(svga_t *svga)
case 1600:
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
svga->clock /= 2.0;
break;
default:
break;
@@ -3883,6 +3889,7 @@ s3_recalctimings(svga_t *svga)
case S3_NUMBER9_9FX_531:
svga->hdisp >>= 1;
svga->dots_per_clock >>= 1;
svga->clock /= 2.0;
break;
default:
@@ -3901,6 +3908,7 @@ s3_recalctimings(svga_t *svga)
case S3_SPEA_MERCURY_P64V:
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
svga->clock /= 2.0;
/* TODO: Is this still needed? */
if (svga->hdisp == 832)
svga->hdisp -= 32;
@@ -3912,6 +3920,7 @@ s3_recalctimings(svga_t *svga)
case 1600:
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
svga->clock /= 2.0;
break;
default:
break;
@@ -4045,6 +4054,7 @@ s3_recalctimings(svga_t *svga)
case 1600:
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
svga->clock /= 2.0;
break;
default:
break;
@@ -4067,6 +4077,7 @@ s3_recalctimings(svga_t *svga)
case S3_SPEA_MERCURY_P64V:
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
svga->clock /= 2.0;
/* TODO: Is this still needed? */
if (svga->hdisp == 832)
svga->hdisp -= 32;
@@ -4078,6 +4089,7 @@ s3_recalctimings(svga_t *svga)
case 1600:
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
svga->clock /= 2.0;
break;
default:
break;
@@ -4153,6 +4165,7 @@ s3_recalctimings(svga_t *svga)
case S3_VISION864:
svga->hdisp = (svga->hdisp << 1) / 3;
svga->dots_per_clock = (svga->dots_per_clock << 1) / 3;
svga->clock /= (2.0 / 3.0);
break;
case S3_VISION968:
@@ -4160,6 +4173,7 @@ s3_recalctimings(svga_t *svga)
case S3_MIROVIDEO40SV_ERGO_968:
svga->hdisp = (svga->hdisp / 3) << 2;
svga->dots_per_clock = (svga->hdisp / 3) << 2;
svga->clock /= (2.0 / 3.0);
break;
default:
break;
@@ -4190,6 +4204,7 @@ s3_recalctimings(svga_t *svga)
case S3_NUMBER9_9FX_531:
svga->hdisp >>= 1;
svga->dots_per_clock >>= 1;
svga->clock /= 2.0;
break;
default:
break;
@@ -4203,6 +4218,7 @@ s3_recalctimings(svga_t *svga)
case 1024:
svga->hdisp >>= 1;
svga->dots_per_clock >>= 1;
svga->clock /= 2.0;
break;
default:
break;
@@ -4214,6 +4230,7 @@ s3_recalctimings(svga_t *svga)
case 1600:
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
svga->clock /= 2.0;
break;
default:
break;
@@ -4235,6 +4252,7 @@ s3_recalctimings(svga_t *svga)
case S3_SPEA_MERCURY_P64V:
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
svga->clock /= 2.0;
/* TODO: Is this still needed? */
if (svga->hdisp == 832)
svga->hdisp -= 32;
@@ -4246,6 +4264,7 @@ s3_recalctimings(svga_t *svga)
case 1600:
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
svga->clock /= 2.0;
break;
default:
break;