diff --git a/src/dosbox.cpp b/src/dosbox.cpp index 82b2d1fa..2415f850 100644 --- a/src/dosbox.cpp +++ b/src/dosbox.cpp @@ -245,6 +245,10 @@ void increaseticks() { //Make it return ticksRemain and set it in the function a if (ticksScheduled >= 250 && ticksDone < 10 && ratio > 5120 && CPU_CycleMax > 50000) ratio = 5120; + // When downscaling multiple times in a row, ensure a minimum amount of downscaling + if (ticksAdded > 15 && ticksScheduled >= 5 && ticksScheduled <= 20 && ratio > 800) + ratio = 800; + if (ratio <= 1024) { double r = 2.0 /(1.0 + 1024.0/(static_cast(ratio))); new_cmax = 1 + static_cast(CPU_CycleMax * r);