From: Toni Wilen Date: Tue, 9 Dec 2025 15:17:52 +0000 (+0200) Subject: Fix missing fast mode strobe when fast mode is ending. X-Git-Tag: 6020~20 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=ca0ae13df014a91e72705c475a58eca9fdfe7925;p=francis%2Fwinuae.git Fix missing fast mode strobe when fast mode is ending. --- 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); } }