From: Toni Wilen Date: Sat, 12 Aug 2017 18:30:02 +0000 (+0300) Subject: Blitter throttle option (non-ce/non-immediate mode only) X-Git-Tag: 3600~129 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=22fa1376b23717d84513980fd87ffdec949d6b81;p=francis%2Fwinuae.git Blitter throttle option (non-ce/non-immediate mode only) --- diff --git a/blitter.cpp b/blitter.cpp index 24b8eeb5..44bf4565 100644 --- a/blitter.cpp +++ b/blitter.cpp @@ -909,6 +909,16 @@ static void blitter_doit (void) blitter_done (current_hpos ()); } +static int makebliteventtime(int delay) +{ + if (delay) { + delay += delay - (int)(delay * (1 + currprefs.blitter_speed_throttle) + 0.5); + if (delay <= 0) + delay = 1; + } + return delay; +} + void blitter_handler (uae_u32 data) { static int blitter_stuck; @@ -925,7 +935,7 @@ void blitter_handler (uae_u32 data) } blitter_stuck = 0; if (blit_slowdown > 0 && !immediate_blits) { - event2_newevent (ev2_blitter, blit_slowdown, 0); + event2_newevent (ev2_blitter, makebliteventtime(blit_slowdown), 0); blit_slowdown = -1; return; } @@ -1626,8 +1636,8 @@ static void do_blitter2 (int hpos, int copper) return; } - blit_cyclecounter = cycles * (blit_dmacount2 + (blit_nod ? 0 : 1)); - event2_newevent (ev2_blitter, blit_cyclecounter, 0); + blit_cyclecounter = cycles * (blit_dmacount2 + (blit_nod ? 0 : 1)); + event2_newevent (ev2_blitter, makebliteventtime(blit_cyclecounter), 0); if (dmaen (DMA_BLITTER) && (currprefs.cpu_model >= 68020 || !currprefs.cpu_memory_cycle_exact)) { if (currprefs.waiting_blits) {