From 2061bb328b0bf073d17cef2a0d544af4f5712606 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Thu, 2 May 2024 20:18:42 +0300 Subject: [PATCH] Check exthblanken and recheck display position if changed. --- custom.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/custom.cpp b/custom.cpp index cfa1cdca..ce5e0080 100644 --- a/custom.cpp +++ b/custom.cpp @@ -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) { -- 2.47.3