]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Check exthblanken and recheck display position if changed.
authorToni Wilen <twilen@winuae.net>
Thu, 2 May 2024 17:18:42 +0000 (20:18 +0300)
committerToni Wilen <twilen@winuae.net>
Thu, 2 May 2024 17:18:42 +0000 (20:18 +0300)
custom.cpp

index cfa1cdcac2e0cdac6afcf4b1b2f724ee81231522..ce5e00803920f0cd57122e8741c94f3dc72cd969 100644 (file)
@@ -351,6 +351,7 @@ static uae_u16 bplcon0_saved, bplcon1_saved, bplcon2_saved;
 static uae_u16 bplcon3_saved, bplcon4_saved;
 static int varsync_changed, varsync_maybe_changed[2];
 static int varhblank_lines, varhblank_val[2];
+static int exthblank_lines[2];
 static uae_u16 vt_old, ht_old, hs_old, vs_old;
 uae_u16 vtotal, htotal;
 static int maxvpos_stored, maxhpos_stored;
@@ -475,7 +476,7 @@ static int last_hdiw;
 static diw_states vdiwstate, hdiwstate, hdiwstate_blank;
 static int hdiwbplstart;
 static int bpl_hstart;
-static bool exthblank, exthblank_state, hcenterblank_state;
+static bool exthblank, exthblank_prev, exthblank_state, hcenterblank_state;
 static int hsyncdebug;
 static int last_diw_hpos;
 static int last_recorded_diw_hpos;
@@ -12365,7 +12366,7 @@ static void vsync_check_vsyncmode(void)
 {
        if (varsync_maybe_changed[0] == 1 || varsync_maybe_changed[1] == 1 || varhblank_lines == -1) {
                init_hz_normal();
-       } else if (varsync_changed == 1) {
+       } else if (varsync_changed == 1 || ((beamcon0 & BEAMCON0_VARBEAMEN) && exthblank_prev != exthblank && (abs(exthblank_lines[0] - exthblank_lines[1]) > maxvpos * 3 / 4))) {
                init_hz_normal();
        } else if (vpos_count > 0 && abs(vpos_count - vpos_count_diff) > 1 && vposw_change && vposw_change < 4) {
                init_hz_vposw();
@@ -12379,6 +12380,8 @@ static void vsync_check_vsyncmode(void)
        varsync_maybe_changed[0] = 0;
        varsync_maybe_changed[1] = 0;
        varhblank_lines = 0;
+       exthblank_lines[0] = exthblank_lines[1] = 0;
+       exthblank_prev = exthblank;
 }
 
 static void check_display_mode_change(void)
@@ -14180,6 +14183,8 @@ static void hsync_handler_post(bool onvsync)
                vb_check();
        }
 
+       exthblank_lines[exthblank ? 1 : 0]++;
+
        if (varhblank_lines > 0) {
                varhblank_lines--;
                if (!varhblank_lines) {