display_hstart_cyclewait_end = 6;
} else if (currprefs.gfx_overscanmode <= OVERSCANMODE_OVERSCAN) {
display_hstart_cyclewait = 32;
- display_hstart_cyclewait_end = 8;
+ display_hstart_cyclewait_end = 7;
} else if (currprefs.gfx_overscanmode == OVERSCANMODE_EXTREME) {
display_hstart_cyclewait = 22;
display_hstart_cyclewait_end = 0;
static uae_u16 *gbuf;
static uae_u8 pixx0, pixx1, pixx2, pixx3;
static uae_u32 debug_buf[256 * 2 * 4], debug_bufx[256 * 2 * 4];
-
+static uae_u32 *hbstrt_ptr1, *hbstrt_ptr2;
void set_inhibit_frame(int monid, int bit)
{
static void do_hbstrt(int cnt)
{
denise_hblank = true;
+ hbstrt_ptr1 = buf1;
+ hbstrt_ptr2 = buf2;
if (!exthblankon_ecs) {
if (delayed_vblank_ecs > 0) {
#ifdef DEBUGGER
}
get_line(gfx_ypos, how);
+ hbstrt_ptr1 = NULL;
if (dtotal < 0 && currprefs.gfx_overscanmode < OVERSCANMODE_ULTRA) {
lts_changed = false;
}
+ // blank last pixel row if normal overscan mode, it might have NTSC artifacts
+ if (hbstrt_ptr1 && currprefs.gfx_overscanmode <= OVERSCANMODE_OVERSCAN) {
+ int add = 1 << hresolution;
+ hbstrt_ptr1 -= denise_lol_shift_prev;
+ hbstrt_ptr2 -= denise_lol_shift_prev;
+ for (int i = 0; i < add; i++) {
+ *hbstrt_ptr1++ = 0x000000;
+ *hbstrt_ptr2++ = 0x000000;
+ }
+ }
+
if (currprefs.display_calibration && xlinebuffer) {
emulate_black_level_calibration(buf1t, buf2t, bufdt, total, calib_start, calib_len);
}