]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Delay OCS Denise blank "bug" by 3 CCKs.
authorToni Wilen <twilen@winuae.net>
Thu, 4 Apr 2024 16:54:56 +0000 (19:54 +0300)
committerToni Wilen <twilen@winuae.net>
Thu, 4 Apr 2024 16:54:56 +0000 (19:54 +0300)
custom.cpp

index 45fa372b6af04827f91615c622dd67657b0d9ded..39d0cae38a27b25d1eeb791572709f4341f1fce0 100644 (file)
@@ -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;