From 60deced9f2b238565ace45c03c12c00d7987650e Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 26 Apr 2026 14:52:02 +0300 Subject: [PATCH] Allow immediate blitter in cycle exact modes --- blitter.cpp | 7 +++++-- main.cpp | 6 ------ od-win32/win32gui.cpp | 1 - 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/blitter.cpp b/blitter.cpp index dd8adee5..9b5b40aa 100644 --- a/blitter.cpp +++ b/blitter.cpp @@ -454,7 +454,7 @@ static void blitter_end(void) static void blitter_done_all(bool all) { blt_info.blit_main = 0; - blt_info.blit_queued = blitter_cycle_exact ? BLITTER_MAX_PIPELINED_CYCLES : 0; + blt_info.blit_queued = blitter_cycle_exact && !immediate_blits ? BLITTER_MAX_PIPELINED_CYCLES : 0; blt_info.finishcycle_dmacon = get_cycles(); blt_info.finishcycle_copper = get_cycles() + 1 * CYCLE_UNIT; blitter_interrupt(); @@ -1716,7 +1716,7 @@ static bool is_done(void) void generate_blitter(void) { - if (!blitter_cycle_exact) { + if (!blitter_cycle_exact || immediate_blits) { return; } @@ -2103,6 +2103,9 @@ void do_blitter(int copper, uaecptr pc) if (blitter_cycle_exact) { if (immediate_blits) { + blitter_delayed_update = 0; + blt_info.blit_pending = 0; + blt_info.blit_queued = 0; blt_info.blitzero = 1; if (dmaen(DMA_BLITTER)) { blitter_doit(); diff --git a/main.cpp b/main.cpp index ad262a62..fc73b2d9 100644 --- a/main.cpp +++ b/main.cpp @@ -364,12 +364,6 @@ void fixup_cpu (struct uae_prefs *p) p->m68k_speed = 0; #endif -#if 0 - if (p->immediate_blits && p->blitter_cycle_exact) { - error_log (_T("Cycle-exact and immediate blitter can't be enabled simultaneously.\n")); - p->immediate_blits = false; - } -#endif if (p->immediate_blits && p->waiting_blits) { error_log (_T("Immediate blitter and waiting blits can't be enabled simultaneously.\n")); p->waiting_blits = 0; diff --git a/od-win32/win32gui.cpp b/od-win32/win32gui.cpp index 0ae7d15f..109575b0 100644 --- a/od-win32/win32gui.cpp +++ b/od-win32/win32gui.cpp @@ -8202,7 +8202,6 @@ static void enable_for_chipsetdlg (HWND hDlg) } else { ew(hDlg, IDC_BLITWAIT, TRUE); } - ew(hDlg, IDC_BLITIMM, !workprefs.cpu_cycle_exact); ew(hDlg, IDC_GENLOCKMODE, genlock ? TRUE : FALSE); ew(hDlg, IDC_GENLOCKMIX, genlock ? TRUE : FALSE); -- 2.47.3