From 4b0f50c1766e13aa5af6b5b80d364a08107e38b6 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Thu, 4 Apr 2024 19:54:56 +0300 Subject: [PATCH] Delay OCS Denise blank "bug" by 3 CCKs. --- custom.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/custom.cpp b/custom.cpp index 45fa372b..39d0cae3 100644 --- a/custom.cpp +++ b/custom.cpp @@ -6111,6 +6111,20 @@ static void finish_decisions(int hpos) } } +static void set_ocs_denise_blank(uae_u32 v) +{ + int hpos = current_hpos(); + sync_color_changes(hpos); + record_color_change2(hpos, 0, COLOR_CHANGE_BLANK | 1); +} +static void reset_ocs_denise_blank(uae_u32 v) +{ + int hpos = current_hpos(); + sync_color_changes(hpos); + record_color_change2(hpos, 0, COLOR_CHANGE_BLANK | 0); +} + + /* Set the state of all decisions to "undecided" for a new scanline. */ static void reset_decisions_scanline_start(void) { @@ -6149,15 +6163,15 @@ static void reset_decisions_scanline_start(void) if (!ecs_denise && currprefs.gfx_overscanmode > OVERSCANMODE_OVERSCAN) { if (!ecs_agnus) { if (vb_start_line == 2 + vblank_extraline) { - record_color_change2(0, 0, COLOR_CHANGE_BLANK | 1); + event2_newevent_xx(-1, 3 * CYCLE_UNIT, 0, set_ocs_denise_blank); } } else { if (vb_start_line == 1 + vblank_extraline) { - record_color_change2(0, 0, COLOR_CHANGE_BLANK | 1); + event2_newevent_xx(-1, 3 * CYCLE_UNIT, 0, set_ocs_denise_blank); } } if (vb_end_next_line2) { - record_color_change2(0, 0, COLOR_CHANGE_BLANK | 0); + event2_newevent_xx(-1, 3 * CYCLE_UNIT, 0, reset_ocs_denise_blank); } } @@ -13061,7 +13075,7 @@ static void hsync_handlerh(bool onvsync) estimate_last_fetch_cycle(hpos); if (vb_end_next_line && !ecs_denise && currprefs.gfx_overscanmode > OVERSCANMODE_OVERSCAN) { - record_color_change2(hpos, 0, COLOR_CHANGE_BLANK | 1); + event2_newevent_xx(-1, 3 * CYCLE_UNIT, 0, set_ocs_denise_blank); } eventtab[ev_hsynch].evtime = get_cycles() + HSYNCTIME; -- 2.47.3