From ca0ae13df014a91e72705c475a58eca9fdfe7925 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Tue, 9 Dec 2025 17:17:52 +0200 Subject: [PATCH] Fix missing fast mode strobe when fast mode is ending. --- custom.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/custom.cpp b/custom.cpp index a526fd53..6048b9db 100644 --- a/custom.cpp +++ b/custom.cpp @@ -12390,6 +12390,17 @@ static void do_cck(bool docycles) } +static uae_u16 quick_strobe(void) +{ + uae_u16 str = get_strobe_reg(0); + write_drga_strobe(str); + if (prev_strobe == 0x3c && str != 0x3c) { + INTREQ_INT(5, 0); + } + prev_strobe = str; + return str; +} + // horizontal sync callback when line not changed + fast cpu static void sync_equalline_handler(void) { @@ -12405,12 +12416,7 @@ static void sync_equalline_handler(void) rga_denise_cycle += rdc_offset; rga_denise_cycle &= DENISE_RGA_SLOT_MASK; - uae_u16 str = get_strobe_reg(0); - write_drga_strobe(str); - if (prev_strobe == 0x3c && str != 0x3c) { - INTREQ_INT(5, 0); - } - prev_strobe = str; + uae_u16 str = quick_strobe(); int diff = display_hstart_fastmode - hpos_delta; linear_hpos += diff; @@ -12458,6 +12464,8 @@ static void sync_equalline_handler(void) } else { custom_fastmode = -1; custom_fastmode_exit = 1; + str = quick_strobe(); + denise_handle_quick_strobe_queue(str, display_hstart_fastmode, rga_denise_cycle); } } -- 2.47.3