]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Separate BPLCON1 comparison horizontal counter to "fix" hardware design flaw in non...
authorToni Wilen <twilen@winuae.net>
Tue, 27 May 2025 16:03:08 +0000 (19:03 +0300)
committerToni Wilen <twilen@winuae.net>
Tue, 27 May 2025 16:03:08 +0000 (19:03 +0300)
13 files changed:
drawing.cpp
genlinetoscr.cpp
linetoscr_aga_fm0.cpp
linetoscr_aga_fm0_genlock.cpp
linetoscr_aga_fm1.cpp
linetoscr_aga_fm1_genlock.cpp
linetoscr_aga_fm2.cpp
linetoscr_aga_fm2_genlock.cpp
linetoscr_ecs_shres.cpp
linetoscr_ocs_ecs.cpp
linetoscr_ocs_ecs_genlock.cpp
linetoscr_ocs_ecs_ntsc.cpp
linetoscr_ocs_ecs_ntsc_genlock.cpp

index ddb2fe46517d7a9a230cc573b6f024b8c7aabc3b..af90f018bf221fc7e361ef01d90abf9ecb86d4ca 100644 (file)
@@ -396,7 +396,7 @@ static LINETOSRC_FUNC lts;
 static bool lts_changed, lts_request;
 typedef void (*LINETOSRC_FUNCF)(int,int,int,int,int,int,int,int,int,uae_u32,uae_u8*,uae_u8*,int,int*,int,struct linestate*);
 
-static int denise_hcounter, denise_hcounter_next, denise_hcounter_new, denise_hcounter_prev;
+static int denise_hcounter, denise_hcounter_next, denise_hcounter_new, denise_hcounter_prev, denise_hcounter_cmp;
 static uae_u32 bplxdat[MAX_PLANES], bplxdat2[MAX_PLANES], bplxdat3[MAX_PLANES];
 static uae_u64 bplxdat_64[MAX_PLANES], bplxdat2_64[MAX_PLANES], bplxdat3_64[MAX_PLANES];
 static uae_u16 bplcon0_denise, bplcon1_denise, bplcon2_denise, bplcon3_denise, bplcon4_denise;
@@ -4459,6 +4459,10 @@ static void do_hb(void)
 
 static void do_hbstrt(int cnt)
 {
+       // move denise hcounter used to match BPLCON1 reset in HB start to hide the glitch in right edge
+       if (!denise_accurate_mode) {
+               denise_hcounter_cmp = denise_hcounter;
+       }
        denise_hblank = true;
        if (!exthblankon_ecs) {
                hbstrt_offset = internal_pixel_cnt;
@@ -4700,6 +4704,7 @@ static void denise_handle_quick_strobe(uae_u16 strobe, int offset, int vpos)
        denise_hcounter_new += maxhpos * 2;
        denise_hcounter_new &= 511;
        denise_hcounter = denise_hcounter_new;
+       denise_hcounter_cmp = denise_hcounter;
 
        //write_log("%d %04x %d %d\n", vpos, strobe, offset, denise_hcounter_new);
 
@@ -4708,6 +4713,7 @@ static void denise_handle_quick_strobe(uae_u16 strobe, int offset, int vpos)
                // 3 = refresh offset, 2 = pipeline delay
                denise_hcounter_new = (offset - 3 - 2) * 2 + 2;
                denise_hcounter = denise_hcounter_new;
+               denise_hcounter_cmp = denise_hcounter;
                check_fast_hb();
        }
 }
@@ -5311,6 +5317,8 @@ static void lts_null(void)
 #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
 #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5321,6 +5329,9 @@ static void lts_null(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter;
+               }
                denise_cck++;
        }
 }
@@ -5498,6 +5509,9 @@ static void draw_denise_line(int gfx_ypos, enum nln_how how, uae_u32 linecnt, in
 
        if (startcycle == 0) {
                get_line(gfx_ypos, how);
+
+               //write_log("# %d %d\n", gfx_ypos, vpos);
+
                denise_hcounter_prev = -1;
                hbstrt_offset = -1;
                hbstop_offset = -1;
@@ -5538,6 +5552,8 @@ static void draw_denise_line(int gfx_ypos, enum nln_how how, uae_u32 linecnt, in
 #ifdef DEBUGGER
                                                *debug_dma_dhpos_odd = denise_hcounter;
 #endif
+                                               denise_hcounter_cmp++;
+                                               denise_hcounter_cmp &= 511;
                                                denise_hcounter++;
                                                denise_hcounter &= 511;
                                                denise_hcounter_next++;
@@ -5554,6 +5570,7 @@ static void draw_denise_line(int gfx_ypos, enum nln_how how, uae_u32 linecnt, in
 #ifdef DEBUGGER
                                                *debug_dma_dhpos_odd = denise_hcounter;
 #endif
+                                               denise_hcounter_cmp++;
                                                denise_hcounter++;
                                                denise_hcounter &= 511;
                                                denise_hcounter_next++;
@@ -5562,6 +5579,9 @@ static void draw_denise_line(int gfx_ypos, enum nln_how how, uae_u32 linecnt, in
                                }
                                denise_pixtotal++;
                                denise_hcounter = denise_hcounter_new;
+                               if (denise_accurate_mode) {
+                                       denise_hcounter_cmp = denise_hcounter;
+                               }
                                denise_cck++;
                        }
                        lts_changed = false;
@@ -5590,6 +5610,8 @@ static void draw_denise_line(int gfx_ypos, enum nln_how how, uae_u32 linecnt, in
                        spr_nearest();
                }
 
+               //write_log("- %d\n", vpos);
+
                while (denise_cck < denise_endcycle) {
                        lts();
                        lts_changed = false;
@@ -6173,6 +6195,8 @@ static void lts_unaligned_aga(int cnt, int cnt_next, int h)
        *debug_dma_dhpos_odd = denise_hcounter;
 #endif
 
+       denise_hcounter_cmp++;
+       denise_hcounter_cmp &= 511;
        denise_hcounter++;
        denise_hcounter &= 511;
        denise_hcounter_next++;
@@ -6359,7 +6383,7 @@ static void lts_unaligned_ecs(int cnt, int cnt_next, int h)
                internal_pixel_cnt++;
        }
 
-       int dhv = denise_hcounter & bplcon1_shift_mask;
+       int dhv = denise_hcounter_cmp & bplcon1_shift_mask;
        if (bplcon1_shift[0] == bplcon1_shift[1]) {
                // both even and odd planes copy
                if (bpldat_copy[0] && dhv == bplcon1_shift[0]) {
@@ -6382,6 +6406,7 @@ static void lts_unaligned_ecs(int cnt, int cnt_next, int h)
        *debug_dma_dhpos_odd = denise_hcounter;
 #endif
 
+       denise_hcounter_cmp++;
        denise_hcounter++;
        denise_hcounter &= 511;
        denise_hcounter_next++;
@@ -6697,6 +6722,8 @@ void draw_denise_bitplane_line_fast(int gfx_ypos, enum nln_how how, struct lines
        }
 
        get_line(gfx_ypos, how);
+       
+       //write_log("* %d %d\n", gfx_ypos, vpos);
 
        if (!buf1 && !ls->blankedline && denise_planes > 0) {
                resolution_count[denise_res]++;
index b2be05b81c5817a47a2ce8374a8c8ee46204b452..f91135007fed7638013ef0de986634a1ba11f728 100644 (file)
@@ -410,14 +410,14 @@ static void gen_copybpl(void)
 {
        if (oddeven) {
                // bitplane shifter shifting
-               outf("if (bpldat_copy[0] && (denise_hcounter & %d) == bplcon1_shift[0]) { ", ((16 << bplfmode) >> res) - 1);
+               outf("if (bpldat_copy[0] && (denise_hcounter_cmp & %d) == bplcon1_shift[0]) { ", ((16 << bplfmode) >> res) - 1);
                if (bplfmode == 2) {
                        outf("copybpl%de_64();", planes);
                } else {
                        outf("copybpl%de();", planes);
                }
                outf("}");
-               outf("if (bpldat_copy[1] && (denise_hcounter & %d) == bplcon1_shift[1]) {", ((16 << bplfmode) >> res) - 1);
+               outf("if (bpldat_copy[1] && (denise_hcounter_cmp & %d) == bplcon1_shift[1]) {", ((16 << bplfmode) >> res) - 1);
                if (bplfmode == 2) {
                        outf("copybpl%do_64();", planes);
                } else {
@@ -426,7 +426,7 @@ static void gen_copybpl(void)
                outf("}");
        } else {
                // bitplane shifter shifting
-               outf("if (bpldat_copy[0] && (denise_hcounter & %d) == bplcon1_shift[0]) { ", ((16 << bplfmode) >> res) - 1);
+               outf("if (bpldat_copy[0] && (denise_hcounter_cmp & %d) == bplcon1_shift[0]) { ", ((16 << bplfmode) >> res) - 1);
                if (bplfmode == 2) {
                        outf("copybpl%d_64();", planes);
                } else {
@@ -446,7 +446,7 @@ static void gen_copybpl_hr(int add)
        }
        if (oddeven) {
                // bitplane shifter shifting
-               outf("if (bpldat_copy[0] && ((cnt | %d) & %d) == bplcon1_shift_full_masked[0]) { ", add, (((16 << bplfmode) >> res) << 2) - 1);
+               outf("if (bpldat_copy[0] && ((cmp | %d) & %d) == bplcon1_shift_full_masked[0]) { ", add, (((16 << bplfmode) >> res) << 2) - 1);
                if (bplfmode == 2) {
                        outf("copybpl%de_64();", planes);
                } else {
@@ -457,7 +457,7 @@ static void gen_copybpl_hr(int add)
                        gen_getbpl(0, maxplanes);
                }
                outf("}");
-               outf("if (bpldat_copy[1] && ((cnt | %d) & %d) == bplcon1_shift_full_masked[1]) {", add, (((16 << bplfmode) >> res) << 2) - 1);
+               outf("if (bpldat_copy[1] && ((cmp | %d) & %d) == bplcon1_shift_full_masked[1]) {", add, (((16 << bplfmode) >> res) << 2) - 1);
                if (bplfmode == 2) {
                        outf("copybpl%do_64();", planes);
                } else {
@@ -470,7 +470,7 @@ static void gen_copybpl_hr(int add)
                outf("}");
        } else {
                // bitplane shifter shifting
-               outf("if (bpldat_copy[0] && ((cnt | %d) & %d) == bplcon1_shift_full_masked[0]) { ", add, (((16 << bplfmode) >> res) << 2) - 1);
+               outf("if (bpldat_copy[0] && ((cmp | %d) & %d) == bplcon1_shift_full_masked[0]) { ", add, (((16 << bplfmode) >> res) << 2) - 1);
                if (bplfmode == 2) {
                        outf("copybpl%d_64();", planes);
                } else {
@@ -835,6 +835,7 @@ static void gen_init(void)
        if (aga) {
                outf("int cnt = denise_hcounter << 2;");
                outf("int cnt_next = denise_hcounter_next << 2;");
+               outf("int cmp = denise_hcounter_cmp << 2;");
        } else {
                outf("int cnt = denise_hcounter << 2;");
        }
@@ -1261,6 +1262,8 @@ static void gen_end(void)
        outf("#ifdef DEBUGGER");
        outf("                  *debug_dma_dhpos_odd = denise_hcounter;");
        outf("#endif");
+       outf("                  denise_hcounter_cmp++;");
+       outf("                  denise_hcounter_cmp &= 511;");
        outf("                  denise_hcounter++;");
        outf("                  denise_hcounter &= 511;");
        outf("                  denise_hcounter_next++;");
@@ -1271,6 +1274,9 @@ static void gen_end(void)
        outf("                  internal_pixel_start_cnt = internal_pixel_cnt;");
        outf("          }");
        outf("          denise_hcounter = denise_hcounter_new;");
+       outf("      if (denise_accurate_mode) {");
+       outf("                  denise_hcounter_cmp = denise_hcounter_new;");
+       outf("          }");
        outf("          denise_cck++;");
        outf("  }");
 }
index 9b844970fb650f2e7ef80249a2e3fe5585536bae..3607ebbeee8777ab13e35c446a2837c00536dea3 100644 (file)
@@ -15,6 +15,7 @@ static void lts_aga_fm0_n0_p2_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -28,7 +29,7 @@ static void lts_aga_fm0_n0_p2_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -49,6 +50,8 @@ static void lts_aga_fm0_n0_p2_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -59,6 +62,9 @@ static void lts_aga_fm0_n0_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -77,6 +83,7 @@ static void lts_aga_fm0_n1_p2_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -90,10 +97,10 @@ static void lts_aga_fm0_n1_p2_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -114,6 +121,8 @@ static void lts_aga_fm0_n1_p2_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -124,6 +133,9 @@ static void lts_aga_fm0_n1_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -142,6 +154,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -160,7 +173,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -181,6 +194,8 @@ static void lts_aga_fm0_dpf0_p2_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -191,6 +206,9 @@ static void lts_aga_fm0_dpf0_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -209,6 +227,7 @@ static void lts_aga_fm0_dpf1_p2_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -227,10 +246,10 @@ static void lts_aga_fm0_dpf1_p2_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -251,6 +270,8 @@ static void lts_aga_fm0_dpf1_p2_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -261,6 +282,9 @@ static void lts_aga_fm0_dpf1_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -327,6 +351,7 @@ static void lts_aga_fm0_n0_p4_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -340,7 +365,7 @@ static void lts_aga_fm0_n0_p4_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -361,6 +386,8 @@ static void lts_aga_fm0_n0_p4_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -371,6 +398,9 @@ static void lts_aga_fm0_n0_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -389,6 +419,7 @@ static void lts_aga_fm0_n1_p4_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -402,10 +433,10 @@ static void lts_aga_fm0_n1_p4_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -426,6 +457,8 @@ static void lts_aga_fm0_n1_p4_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -436,6 +469,9 @@ static void lts_aga_fm0_n1_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -454,6 +490,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -472,7 +509,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -493,6 +530,8 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -503,6 +542,9 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -521,6 +563,7 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -539,10 +582,10 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -563,6 +606,8 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -573,6 +618,9 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -639,6 +687,7 @@ static void lts_aga_fm0_n0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -652,7 +701,7 @@ static void lts_aga_fm0_n0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6();
@@ -673,6 +722,8 @@ static void lts_aga_fm0_n0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -683,6 +734,9 @@ static void lts_aga_fm0_n0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -701,6 +755,7 @@ static void lts_aga_fm0_n1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -714,10 +769,10 @@ static void lts_aga_fm0_n1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6();
@@ -738,6 +793,8 @@ static void lts_aga_fm0_n1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -748,6 +805,9 @@ static void lts_aga_fm0_n1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -766,6 +826,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -784,7 +845,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6();
@@ -805,6 +866,8 @@ static void lts_aga_fm0_dpf0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -815,6 +878,9 @@ static void lts_aga_fm0_dpf0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -833,6 +899,7 @@ static void lts_aga_fm0_dpf1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -851,10 +918,10 @@ static void lts_aga_fm0_dpf1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6();
@@ -875,6 +942,8 @@ static void lts_aga_fm0_dpf1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -885,6 +954,9 @@ static void lts_aga_fm0_dpf1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -903,6 +975,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -922,7 +995,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6();
@@ -943,6 +1016,8 @@ static void lts_aga_fm0_ehb0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -953,6 +1028,9 @@ static void lts_aga_fm0_ehb0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -971,6 +1049,7 @@ static void lts_aga_fm0_ehb1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -990,10 +1069,10 @@ static void lts_aga_fm0_ehb1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6();
@@ -1014,6 +1093,8 @@ static void lts_aga_fm0_ehb1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1024,6 +1105,9 @@ static void lts_aga_fm0_ehb1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1042,6 +1126,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1055,7 +1140,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6();
@@ -1076,6 +1161,8 @@ static void lts_aga_fm0_ham0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1086,6 +1173,9 @@ static void lts_aga_fm0_ham0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1104,6 +1194,7 @@ static void lts_aga_fm0_ham1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1117,10 +1208,10 @@ static void lts_aga_fm0_ham1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6();
@@ -1141,6 +1232,8 @@ static void lts_aga_fm0_ham1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1151,6 +1244,9 @@ static void lts_aga_fm0_ham1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1169,6 +1265,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1183,7 +1280,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6();
@@ -1204,6 +1301,8 @@ static void lts_aga_fm0_kehb0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1214,6 +1313,9 @@ static void lts_aga_fm0_kehb0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1232,6 +1334,7 @@ static void lts_aga_fm0_kehb1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1246,10 +1349,10 @@ static void lts_aga_fm0_kehb1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6();
@@ -1270,6 +1373,8 @@ static void lts_aga_fm0_kehb1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1280,6 +1385,9 @@ static void lts_aga_fm0_kehb1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1298,6 +1406,7 @@ static void lts_aga_fm0_n0_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1311,7 +1420,7 @@ static void lts_aga_fm0_n0_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8();
@@ -1332,6 +1441,8 @@ static void lts_aga_fm0_n0_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1342,6 +1453,9 @@ static void lts_aga_fm0_n0_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1360,6 +1474,7 @@ static void lts_aga_fm0_n1_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1373,10 +1488,10 @@ static void lts_aga_fm0_n1_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8();
@@ -1397,6 +1512,8 @@ static void lts_aga_fm0_n1_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1407,6 +1524,9 @@ static void lts_aga_fm0_n1_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1425,6 +1545,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1443,7 +1564,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8();
@@ -1464,6 +1585,8 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1474,6 +1597,9 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1492,6 +1618,7 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1510,10 +1637,10 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8();
@@ -1534,6 +1661,8 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1544,6 +1673,9 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1578,6 +1710,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1591,7 +1724,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8();
@@ -1612,6 +1745,8 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1622,6 +1757,9 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1640,6 +1778,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1653,10 +1792,10 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8();
@@ -1677,6 +1816,8 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1687,6 +1828,9 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1721,6 +1865,7 @@ static void lts_aga_fm0_n0_p2_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1735,7 +1880,7 @@ static void lts_aga_fm0_n0_p2_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -1770,6 +1915,8 @@ static void lts_aga_fm0_n0_p2_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1780,6 +1927,9 @@ static void lts_aga_fm0_n0_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1798,6 +1948,7 @@ static void lts_aga_fm0_n1_p2_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1812,10 +1963,10 @@ static void lts_aga_fm0_n1_p2_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -1850,6 +2001,8 @@ static void lts_aga_fm0_n1_p2_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1860,6 +2013,9 @@ static void lts_aga_fm0_n1_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1878,6 +2034,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1897,7 +2054,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -1932,6 +2089,8 @@ static void lts_aga_fm0_dpf0_p2_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1942,6 +2101,9 @@ static void lts_aga_fm0_dpf0_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1960,6 +2122,7 @@ static void lts_aga_fm0_dpf1_p2_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1979,10 +2142,10 @@ static void lts_aga_fm0_dpf1_p2_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -2017,6 +2180,8 @@ static void lts_aga_fm0_dpf1_p2_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2027,6 +2192,9 @@ static void lts_aga_fm0_dpf1_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2093,6 +2261,7 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2107,7 +2276,7 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -2142,6 +2311,8 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2152,6 +2323,9 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2170,6 +2344,7 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2184,10 +2359,10 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -2222,6 +2397,8 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2232,6 +2409,9 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2250,6 +2430,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2269,7 +2450,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -2304,6 +2485,8 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2314,6 +2497,9 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2332,6 +2518,7 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2351,10 +2538,10 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -2389,6 +2576,8 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2399,6 +2588,9 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2465,6 +2657,7 @@ static void lts_aga_fm0_n0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2479,7 +2672,7 @@ static void lts_aga_fm0_n0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6();
@@ -2514,6 +2707,8 @@ static void lts_aga_fm0_n0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2524,6 +2719,9 @@ static void lts_aga_fm0_n0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2542,6 +2740,7 @@ static void lts_aga_fm0_n1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2556,10 +2755,10 @@ static void lts_aga_fm0_n1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6();
@@ -2594,6 +2793,8 @@ static void lts_aga_fm0_n1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2604,6 +2805,9 @@ static void lts_aga_fm0_n1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2622,6 +2826,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2641,7 +2846,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6();
@@ -2676,6 +2881,8 @@ static void lts_aga_fm0_dpf0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2686,6 +2893,9 @@ static void lts_aga_fm0_dpf0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2704,6 +2914,7 @@ static void lts_aga_fm0_dpf1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2723,10 +2934,10 @@ static void lts_aga_fm0_dpf1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6();
@@ -2761,6 +2972,8 @@ static void lts_aga_fm0_dpf1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2771,6 +2984,9 @@ static void lts_aga_fm0_dpf1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2789,6 +3005,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2809,7 +3026,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6();
@@ -2844,6 +3061,8 @@ static void lts_aga_fm0_ehb0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2854,6 +3073,9 @@ static void lts_aga_fm0_ehb0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2872,6 +3094,7 @@ static void lts_aga_fm0_ehb1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2892,10 +3115,10 @@ static void lts_aga_fm0_ehb1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6();
@@ -2930,6 +3153,8 @@ static void lts_aga_fm0_ehb1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2940,6 +3165,9 @@ static void lts_aga_fm0_ehb1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2958,6 +3186,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2972,7 +3201,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6();
@@ -3007,6 +3236,8 @@ static void lts_aga_fm0_ham0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3017,6 +3248,9 @@ static void lts_aga_fm0_ham0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3035,6 +3269,7 @@ static void lts_aga_fm0_ham1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3049,10 +3284,10 @@ static void lts_aga_fm0_ham1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6();
@@ -3087,6 +3322,8 @@ static void lts_aga_fm0_ham1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3097,6 +3334,9 @@ static void lts_aga_fm0_ham1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3115,6 +3355,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3130,7 +3371,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6();
@@ -3165,6 +3406,8 @@ static void lts_aga_fm0_kehb0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3175,6 +3418,9 @@ static void lts_aga_fm0_kehb0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3193,6 +3439,7 @@ static void lts_aga_fm0_kehb1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3208,10 +3455,10 @@ static void lts_aga_fm0_kehb1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6();
@@ -3246,6 +3493,8 @@ static void lts_aga_fm0_kehb1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3256,6 +3505,9 @@ static void lts_aga_fm0_kehb1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3274,6 +3526,7 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3288,7 +3541,7 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8();
@@ -3323,6 +3576,8 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3333,6 +3588,9 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3351,6 +3609,7 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3365,10 +3624,10 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8();
@@ -3403,6 +3662,8 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3413,6 +3674,9 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3431,6 +3695,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3450,7 +3715,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8();
@@ -3485,6 +3750,8 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3495,6 +3762,9 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3513,6 +3783,7 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3532,10 +3803,10 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8();
@@ -3570,6 +3841,8 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3580,6 +3853,9 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3614,6 +3890,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3628,7 +3905,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8();
@@ -3663,6 +3940,8 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3673,6 +3952,9 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3691,6 +3973,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3705,10 +3988,10 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8();
@@ -3743,6 +4026,8 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3753,6 +4038,9 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3787,6 +4075,7 @@ static void lts_aga_fm0_n0_p2_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -3800,7 +4089,7 @@ static void lts_aga_fm0_n0_p2_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -3822,6 +4111,8 @@ static void lts_aga_fm0_n0_p2_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3832,6 +4123,9 @@ static void lts_aga_fm0_n0_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3846,6 +4140,7 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -3859,7 +4154,7 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -3876,7 +4171,7 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -3898,6 +4193,8 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3908,6 +4205,9 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3922,6 +4222,7 @@ static void lts_aga_fm0_n1_p2_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -3935,10 +4236,10 @@ static void lts_aga_fm0_n1_p2_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -3960,6 +4261,8 @@ static void lts_aga_fm0_n1_p2_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3970,6 +4273,9 @@ static void lts_aga_fm0_n1_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3984,6 +4290,7 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -3997,10 +4304,10 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -4017,10 +4324,10 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -4042,6 +4349,8 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4052,6 +4361,9 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4066,6 +4378,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4084,7 +4397,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -4106,6 +4419,8 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4116,6 +4431,9 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4130,6 +4448,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4148,7 +4467,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -4170,7 +4489,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -4192,6 +4511,8 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4202,6 +4523,9 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4216,6 +4540,7 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4234,10 +4559,10 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -4259,6 +4584,8 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4269,6 +4596,9 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4283,6 +4613,7 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4301,10 +4632,10 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -4326,10 +4657,10 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -4351,6 +4682,8 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4361,6 +4694,9 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4423,6 +4759,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4436,7 +4773,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -4458,6 +4795,8 @@ static void lts_aga_fm0_n0_p4_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4468,6 +4807,9 @@ static void lts_aga_fm0_n0_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4482,6 +4824,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4495,7 +4838,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -4512,7 +4855,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -4534,6 +4877,8 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4544,6 +4889,9 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4558,6 +4906,7 @@ static void lts_aga_fm0_n1_p4_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4571,10 +4920,10 @@ static void lts_aga_fm0_n1_p4_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -4596,6 +4945,8 @@ static void lts_aga_fm0_n1_p4_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4606,6 +4957,9 @@ static void lts_aga_fm0_n1_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4620,6 +4974,7 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4633,10 +4988,10 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -4653,10 +5008,10 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -4678,6 +5033,8 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4688,6 +5045,9 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4702,6 +5062,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4720,7 +5081,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -4742,6 +5103,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4752,6 +5115,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4766,6 +5132,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4784,7 +5151,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -4806,7 +5173,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -4828,6 +5195,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4838,6 +5207,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4852,6 +5224,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4870,10 +5243,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -4895,6 +5268,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4905,6 +5280,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4919,6 +5297,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4937,10 +5316,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -4962,10 +5341,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -4987,6 +5366,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4997,6 +5378,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5219,6 +5603,7 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5233,7 +5618,7 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -5269,6 +5654,8 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5279,6 +5666,9 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5293,6 +5683,7 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5307,7 +5698,7 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -5332,7 +5723,7 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -5361,6 +5752,8 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5371,6 +5764,9 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5385,6 +5781,7 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5399,10 +5796,10 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -5438,6 +5835,8 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5448,6 +5847,9 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5462,6 +5864,7 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5476,10 +5879,10 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -5504,10 +5907,10 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -5536,6 +5939,8 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5546,6 +5951,9 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5560,6 +5968,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5579,7 +5988,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -5615,6 +6024,8 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5625,6 +6036,9 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5639,6 +6053,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5658,7 +6073,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -5688,7 +6103,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -5717,6 +6132,8 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5727,6 +6144,9 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5741,6 +6161,7 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5760,10 +6181,10 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -5799,6 +6220,8 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5809,6 +6232,9 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5823,6 +6249,7 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5842,10 +6269,10 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -5875,10 +6302,10 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -5907,6 +6334,8 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5917,6 +6346,9 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5979,6 +6411,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5993,7 +6426,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -6029,6 +6462,8 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6039,6 +6474,9 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6053,6 +6491,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -6067,7 +6506,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -6092,7 +6531,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -6121,6 +6560,8 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6131,6 +6572,9 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6145,6 +6589,7 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -6159,10 +6604,10 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -6198,6 +6643,8 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6208,6 +6655,9 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6222,6 +6672,7 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -6236,10 +6687,10 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -6264,10 +6715,10 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -6296,6 +6747,8 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6306,6 +6759,9 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6320,6 +6776,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -6339,7 +6796,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -6375,6 +6832,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6385,6 +6844,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6399,6 +6861,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -6418,7 +6881,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -6448,7 +6911,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -6477,6 +6940,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6487,6 +6952,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6501,6 +6969,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -6520,10 +6989,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -6559,6 +7028,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6569,6 +7040,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6583,6 +7057,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -6602,10 +7077,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -6635,10 +7110,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -6667,6 +7142,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6677,6 +7154,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7539,6 +8019,7 @@ static void lts_aga_fm0_n0_p2_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7557,7 +8038,7 @@ static void lts_aga_fm0_n0_p2_ilores_dhires(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -7581,7 +8062,7 @@ static void lts_aga_fm0_n0_p2_ilores_dhires(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -7612,6 +8093,8 @@ static void lts_aga_fm0_n0_p2_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7622,6 +8105,9 @@ static void lts_aga_fm0_n0_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7640,6 +8126,7 @@ static void lts_aga_fm0_n1_p2_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7664,12 +8151,12 @@ static void lts_aga_fm0_n1_p2_ilores_dhires(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -7699,12 +8186,12 @@ static void lts_aga_fm0_n1_p2_ilores_dhires(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -7735,6 +8222,8 @@ static void lts_aga_fm0_n1_p2_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7745,6 +8234,9 @@ static void lts_aga_fm0_n1_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7763,6 +8255,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7786,7 +8279,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -7815,7 +8308,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -7846,6 +8339,8 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7856,6 +8351,9 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7874,6 +8372,7 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7903,12 +8402,12 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -7943,12 +8442,12 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -7979,6 +8478,8 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7989,6 +8490,9 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8055,6 +8559,7 @@ static void lts_aga_fm0_n0_p4_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -8073,7 +8578,7 @@ static void lts_aga_fm0_n0_p4_ilores_dhires(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -8097,7 +8602,7 @@ static void lts_aga_fm0_n0_p4_ilores_dhires(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -8128,6 +8633,8 @@ static void lts_aga_fm0_n0_p4_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8138,6 +8645,9 @@ static void lts_aga_fm0_n0_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8156,6 +8666,7 @@ static void lts_aga_fm0_n1_p4_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -8180,12 +8691,12 @@ static void lts_aga_fm0_n1_p4_ilores_dhires(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -8215,12 +8726,12 @@ static void lts_aga_fm0_n1_p4_ilores_dhires(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -8251,6 +8762,8 @@ static void lts_aga_fm0_n1_p4_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8261,6 +8774,9 @@ static void lts_aga_fm0_n1_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8279,6 +8795,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -8302,7 +8819,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -8331,7 +8848,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -8362,6 +8879,8 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8372,6 +8891,9 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8390,6 +8912,7 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -8419,12 +8942,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -8459,12 +8982,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -8495,6 +9018,8 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8505,6 +9030,9 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8571,6 +9099,7 @@ static void lts_aga_fm0_n0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -8589,7 +9118,7 @@ static void lts_aga_fm0_n0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -8613,7 +9142,7 @@ static void lts_aga_fm0_n0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -8644,6 +9173,8 @@ static void lts_aga_fm0_n0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8654,6 +9185,9 @@ static void lts_aga_fm0_n0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8672,6 +9206,7 @@ static void lts_aga_fm0_n1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -8696,12 +9231,12 @@ static void lts_aga_fm0_n1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -8731,12 +9266,12 @@ static void lts_aga_fm0_n1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -8767,6 +9302,8 @@ static void lts_aga_fm0_n1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8777,6 +9314,9 @@ static void lts_aga_fm0_n1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8795,6 +9335,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -8818,7 +9359,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -8847,7 +9388,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -8878,6 +9419,8 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8888,6 +9431,9 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8906,6 +9452,7 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -8935,12 +9482,12 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -8975,12 +9522,12 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -9011,6 +9558,8 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9021,6 +9570,9 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9039,6 +9591,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -9063,7 +9616,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -9093,7 +9646,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -9124,6 +9677,8 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9134,6 +9689,9 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9152,6 +9710,7 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -9182,12 +9741,12 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -9223,12 +9782,12 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -9259,6 +9818,8 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9269,6 +9830,9 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9287,6 +9851,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -9305,7 +9870,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -9329,7 +9894,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -9360,6 +9925,8 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9370,6 +9937,9 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9388,6 +9958,7 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -9412,12 +9983,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -9447,12 +10018,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -9483,6 +10054,8 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9493,6 +10066,9 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9511,6 +10087,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -9530,7 +10107,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -9555,7 +10132,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -9586,6 +10163,8 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9596,6 +10175,9 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9614,6 +10196,7 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -9639,12 +10222,12 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -9675,12 +10258,12 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -9711,6 +10294,8 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9721,6 +10306,9 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9739,6 +10327,7 @@ static void lts_aga_fm0_n0_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -9757,7 +10346,7 @@ static void lts_aga_fm0_n0_p8_ilores_dhires(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -9781,7 +10370,7 @@ static void lts_aga_fm0_n0_p8_ilores_dhires(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -9812,6 +10401,8 @@ static void lts_aga_fm0_n0_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9822,6 +10413,9 @@ static void lts_aga_fm0_n0_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9840,6 +10434,7 @@ static void lts_aga_fm0_n1_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -9864,12 +10459,12 @@ static void lts_aga_fm0_n1_p8_ilores_dhires(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -9899,12 +10494,12 @@ static void lts_aga_fm0_n1_p8_ilores_dhires(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -9935,6 +10530,8 @@ static void lts_aga_fm0_n1_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9945,6 +10542,9 @@ static void lts_aga_fm0_n1_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9963,6 +10563,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -9986,7 +10587,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -10015,7 +10616,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -10046,6 +10647,8 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10056,6 +10659,9 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10074,6 +10680,7 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -10103,12 +10710,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -10143,12 +10750,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -10179,6 +10786,8 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10189,6 +10798,9 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10223,6 +10835,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -10241,7 +10854,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -10265,7 +10878,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -10296,6 +10909,8 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10306,6 +10921,9 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10324,6 +10942,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -10348,12 +10967,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -10383,12 +11002,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -10419,6 +11038,8 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10429,6 +11050,9 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10463,6 +11087,7 @@ static void lts_aga_fm0_n0_p2_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10482,7 +11107,7 @@ static void lts_aga_fm0_n0_p2_ilores_dhires_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -10515,7 +11140,7 @@ static void lts_aga_fm0_n0_p2_ilores_dhires_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -10566,6 +11191,8 @@ static void lts_aga_fm0_n0_p2_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10576,6 +11203,9 @@ static void lts_aga_fm0_n0_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10594,6 +11224,7 @@ static void lts_aga_fm0_n1_p2_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10619,12 +11250,12 @@ static void lts_aga_fm0_n1_p2_ilores_dhires_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -10663,12 +11294,12 @@ static void lts_aga_fm0_n1_p2_ilores_dhires_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -10719,6 +11350,8 @@ static void lts_aga_fm0_n1_p2_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10729,6 +11362,9 @@ static void lts_aga_fm0_n1_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10747,6 +11383,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10771,7 +11408,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -10809,7 +11446,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -10860,6 +11497,8 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10870,6 +11509,9 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10888,6 +11530,7 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10918,12 +11561,12 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -10967,12 +11610,12 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -11023,6 +11666,8 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11033,6 +11678,9 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11099,6 +11747,7 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11118,7 +11767,7 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -11151,7 +11800,7 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -11202,6 +11851,8 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11212,6 +11863,9 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11230,6 +11884,7 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11255,12 +11910,12 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -11299,12 +11954,12 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -11355,6 +12010,8 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11365,6 +12022,9 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11383,6 +12043,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11407,7 +12068,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -11445,7 +12106,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -11496,6 +12157,8 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11506,6 +12169,9 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11524,6 +12190,7 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11554,12 +12221,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -11603,12 +12270,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -11659,6 +12326,8 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11669,6 +12338,9 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11735,6 +12407,7 @@ static void lts_aga_fm0_n0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11754,7 +12427,7 @@ static void lts_aga_fm0_n0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -11787,7 +12460,7 @@ static void lts_aga_fm0_n0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -11838,6 +12511,8 @@ static void lts_aga_fm0_n0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11848,6 +12523,9 @@ static void lts_aga_fm0_n0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11866,6 +12544,7 @@ static void lts_aga_fm0_n1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11891,12 +12570,12 @@ static void lts_aga_fm0_n1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -11935,12 +12614,12 @@ static void lts_aga_fm0_n1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -11991,6 +12670,8 @@ static void lts_aga_fm0_n1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12001,6 +12682,9 @@ static void lts_aga_fm0_n1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12019,6 +12703,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12043,7 +12728,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -12081,7 +12766,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -12132,6 +12817,8 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12142,6 +12829,9 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12160,6 +12850,7 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12190,12 +12881,12 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -12239,12 +12930,12 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -12295,6 +12986,8 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12305,6 +12998,9 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12323,6 +13019,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12348,7 +13045,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -12387,7 +13084,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -12438,6 +13135,8 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12448,6 +13147,9 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12466,6 +13168,7 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12497,12 +13200,12 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -12547,12 +13250,12 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -12603,6 +13306,8 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12613,6 +13318,9 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12631,6 +13339,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12650,7 +13359,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -12683,7 +13392,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -12734,6 +13443,8 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12744,6 +13455,9 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12762,6 +13476,7 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12787,12 +13502,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -12831,12 +13546,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -12887,6 +13602,8 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12897,6 +13614,9 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12915,6 +13635,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12935,7 +13656,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -12969,7 +13690,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -13020,6 +13741,8 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13030,6 +13753,9 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13048,6 +13774,7 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -13074,12 +13801,12 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -13119,12 +13846,12 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -13175,6 +13902,8 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13185,6 +13914,9 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13203,6 +13935,7 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -13222,7 +13955,7 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -13255,7 +13988,7 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -13306,6 +14039,8 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13316,6 +14051,9 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13334,6 +14072,7 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -13359,12 +14098,12 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -13403,12 +14142,12 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -13459,6 +14198,8 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13469,6 +14210,9 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13487,6 +14231,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -13511,7 +14256,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -13549,7 +14294,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -13600,6 +14345,8 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13610,6 +14357,9 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13628,6 +14378,7 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -13658,12 +14409,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -13707,12 +14458,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -13763,6 +14514,8 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13773,6 +14526,9 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13807,6 +14563,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -13826,7 +14583,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -13859,7 +14616,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -13910,6 +14667,8 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13920,6 +14679,9 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13938,6 +14700,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -13963,12 +14726,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -14007,12 +14770,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -14063,6 +14826,8 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14073,6 +14838,9 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14107,6 +14875,7 @@ static void lts_aga_fm0_n0_p2_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14120,7 +14889,7 @@ static void lts_aga_fm0_n0_p2_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -14138,7 +14907,7 @@ static void lts_aga_fm0_n0_p2_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -14168,6 +14937,8 @@ static void lts_aga_fm0_n0_p2_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14178,6 +14949,9 @@ static void lts_aga_fm0_n0_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14196,6 +14970,7 @@ static void lts_aga_fm0_n1_p2_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14209,10 +14984,10 @@ static void lts_aga_fm0_n1_p2_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -14230,10 +15005,10 @@ static void lts_aga_fm0_n1_p2_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -14263,6 +15038,8 @@ static void lts_aga_fm0_n1_p2_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14273,6 +15050,9 @@ static void lts_aga_fm0_n1_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14291,6 +15071,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14309,7 +15090,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -14332,7 +15113,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -14362,6 +15143,8 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14372,6 +15155,9 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14390,6 +15176,7 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14408,10 +15195,10 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -14434,10 +15221,10 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -14467,6 +15254,8 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14477,6 +15266,9 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14543,6 +15335,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14556,7 +15349,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -14574,7 +15367,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -14604,6 +15397,8 @@ static void lts_aga_fm0_n0_p4_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14614,6 +15409,9 @@ static void lts_aga_fm0_n0_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14632,6 +15430,7 @@ static void lts_aga_fm0_n1_p4_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14645,10 +15444,10 @@ static void lts_aga_fm0_n1_p4_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -14666,10 +15465,10 @@ static void lts_aga_fm0_n1_p4_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -14699,6 +15498,8 @@ static void lts_aga_fm0_n1_p4_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14709,6 +15510,9 @@ static void lts_aga_fm0_n1_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14727,6 +15531,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14745,7 +15550,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -14768,7 +15573,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -14798,6 +15603,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14808,6 +15615,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14826,6 +15636,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14844,10 +15655,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -14870,10 +15681,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -14903,6 +15714,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14913,6 +15726,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15139,6 +15955,7 @@ static void lts_aga_fm0_n0_p2_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15153,7 +15970,7 @@ static void lts_aga_fm0_n0_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -15180,7 +15997,7 @@ static void lts_aga_fm0_n0_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -15230,6 +16047,8 @@ static void lts_aga_fm0_n0_p2_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15240,6 +16059,9 @@ static void lts_aga_fm0_n0_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15258,6 +16080,7 @@ static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15272,10 +16095,10 @@ static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -15302,10 +16125,10 @@ static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -15355,6 +16178,8 @@ static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15365,6 +16190,9 @@ static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15383,6 +16211,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15402,7 +16231,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -15434,7 +16263,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -15484,6 +16313,8 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15494,6 +16325,9 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15512,6 +16346,7 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15531,10 +16366,10 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -15566,10 +16401,10 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -15619,6 +16454,8 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15629,6 +16466,9 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15695,6 +16535,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15709,7 +16550,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -15736,7 +16577,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -15786,6 +16627,8 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15796,6 +16639,9 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15814,6 +16660,7 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15828,10 +16675,10 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -15858,10 +16705,10 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -15911,6 +16758,8 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15921,6 +16770,9 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15939,6 +16791,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15958,7 +16811,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -15990,7 +16843,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -16040,6 +16893,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16050,6 +16905,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16068,6 +16926,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16087,10 +16946,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -16122,10 +16981,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -16175,6 +17034,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16185,6 +17046,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16411,6 +17275,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -16424,7 +17289,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -16443,7 +17308,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -16474,6 +17339,8 @@ static void lts_aga_fm0_n0_p2_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16484,6 +17351,9 @@ static void lts_aga_fm0_n0_p2_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16498,6 +17368,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -16511,7 +17382,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -16528,7 +17399,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -16546,7 +17417,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -16563,7 +17434,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -16595,6 +17466,8 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16605,6 +17478,9 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16619,6 +17495,7 @@ static void lts_aga_fm0_n1_p2_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -16632,10 +17509,10 @@ static void lts_aga_fm0_n1_p2_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -16654,10 +17531,10 @@ static void lts_aga_fm0_n1_p2_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -16688,6 +17565,8 @@ static void lts_aga_fm0_n1_p2_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16698,6 +17577,9 @@ static void lts_aga_fm0_n1_p2_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16712,6 +17594,7 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -16725,10 +17608,10 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -16745,10 +17628,10 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -16766,10 +17649,10 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -16786,10 +17669,10 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -16821,6 +17704,8 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16831,6 +17716,9 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16845,6 +17733,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -16863,7 +17752,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -16887,7 +17776,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -16918,6 +17807,8 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16928,6 +17819,9 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16942,6 +17836,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -16960,7 +17855,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -16982,7 +17877,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -17005,7 +17900,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -17027,7 +17922,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -17059,6 +17954,8 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17069,6 +17966,9 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17083,6 +17983,7 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -17101,10 +18002,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -17128,10 +18029,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -17162,6 +18063,8 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17172,6 +18075,9 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17186,6 +18092,7 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -17204,10 +18111,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -17229,10 +18136,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -17255,10 +18162,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -17280,10 +18187,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -17315,6 +18222,8 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17325,6 +18234,9 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17627,6 +18539,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17641,7 +18554,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -17669,7 +18582,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -17720,6 +18633,8 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17730,6 +18645,9 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17744,6 +18662,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17758,7 +18677,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -17783,7 +18702,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -17802,7 +18721,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -17827,7 +18746,7 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -17873,6 +18792,8 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17883,6 +18804,9 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17897,6 +18821,7 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17911,10 +18836,10 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -17942,10 +18867,10 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -17996,6 +18921,8 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18006,6 +18933,9 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18020,6 +18950,7 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18034,10 +18965,10 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -18062,10 +18993,10 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -18084,10 +19015,10 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -18112,10 +19043,10 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -18161,6 +19092,8 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18171,6 +19104,9 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18185,6 +19121,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18204,7 +19141,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -18237,7 +19174,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -18288,6 +19225,8 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18298,6 +19237,9 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18312,6 +19254,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18331,7 +19274,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -18361,7 +19304,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -18385,7 +19328,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -18415,7 +19358,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -18461,6 +19404,8 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18471,6 +19416,9 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18485,6 +19433,7 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18504,10 +19453,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -18540,10 +19489,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -18594,6 +19543,8 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18604,6 +19555,9 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18618,6 +19572,7 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18637,10 +19592,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -18670,10 +19625,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -18697,10 +19652,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -18730,10 +19685,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -18779,6 +19734,8 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18789,6 +19746,9 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19091,6 +20051,7 @@ static void lts_aga_fm0_n0_p2_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19109,7 +20070,7 @@ static void lts_aga_fm0_n0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -19133,7 +20094,7 @@ static void lts_aga_fm0_n0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -19157,7 +20118,7 @@ static void lts_aga_fm0_n0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -19181,7 +20142,7 @@ static void lts_aga_fm0_n0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -19230,6 +20191,8 @@ static void lts_aga_fm0_n0_p2_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19240,6 +20203,9 @@ static void lts_aga_fm0_n0_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19258,6 +20224,7 @@ static void lts_aga_fm0_n1_p2_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19282,12 +20249,12 @@ static void lts_aga_fm0_n1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -19317,12 +20284,12 @@ static void lts_aga_fm0_n1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -19352,12 +20319,12 @@ static void lts_aga_fm0_n1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -19387,12 +20354,12 @@ static void lts_aga_fm0_n1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -19441,6 +20408,8 @@ static void lts_aga_fm0_n1_p2_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19451,6 +20420,9 @@ static void lts_aga_fm0_n1_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19469,6 +20441,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19492,7 +20465,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -19521,7 +20494,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -19550,7 +20523,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -19579,7 +20552,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -19628,6 +20601,8 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19638,6 +20613,9 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19656,6 +20634,7 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19685,12 +20664,12 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -19725,12 +20704,12 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -19765,12 +20744,12 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -19805,12 +20784,12 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -19859,6 +20838,8 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19869,6 +20850,9 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19935,6 +20919,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19953,7 +20938,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -19977,7 +20962,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -20001,7 +20986,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -20025,7 +21010,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -20074,6 +21059,8 @@ static void lts_aga_fm0_n0_p4_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20084,6 +21071,9 @@ static void lts_aga_fm0_n0_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20102,6 +21092,7 @@ static void lts_aga_fm0_n1_p4_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20126,12 +21117,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -20161,12 +21152,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -20196,12 +21187,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -20231,12 +21222,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -20285,6 +21276,8 @@ static void lts_aga_fm0_n1_p4_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20295,6 +21288,9 @@ static void lts_aga_fm0_n1_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20313,6 +21309,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20336,7 +21333,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -20365,7 +21362,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -20394,7 +21391,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -20423,7 +21420,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -20472,6 +21469,8 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20482,6 +21481,9 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20500,6 +21502,7 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20529,12 +21532,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -20569,12 +21572,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -20609,12 +21612,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -20649,12 +21652,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -20703,6 +21706,8 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20713,6 +21718,9 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20779,6 +21787,7 @@ static void lts_aga_fm0_n0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20797,7 +21806,7 @@ static void lts_aga_fm0_n0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -20821,7 +21830,7 @@ static void lts_aga_fm0_n0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -20845,7 +21854,7 @@ static void lts_aga_fm0_n0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -20869,7 +21878,7 @@ static void lts_aga_fm0_n0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -20918,6 +21927,8 @@ static void lts_aga_fm0_n0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20928,6 +21939,9 @@ static void lts_aga_fm0_n0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20946,6 +21960,7 @@ static void lts_aga_fm0_n1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20970,12 +21985,12 @@ static void lts_aga_fm0_n1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -21005,12 +22020,12 @@ static void lts_aga_fm0_n1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -21040,12 +22055,12 @@ static void lts_aga_fm0_n1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -21075,12 +22090,12 @@ static void lts_aga_fm0_n1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -21129,6 +22144,8 @@ static void lts_aga_fm0_n1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21139,6 +22156,9 @@ static void lts_aga_fm0_n1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21157,6 +22177,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21180,7 +22201,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -21209,7 +22230,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -21238,7 +22259,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -21267,7 +22288,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -21316,6 +22337,8 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21326,6 +22349,9 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21344,6 +22370,7 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21373,12 +22400,12 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -21413,12 +22440,12 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -21453,12 +22480,12 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -21493,12 +22520,12 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -21547,6 +22574,8 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21557,6 +22586,9 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21575,6 +22607,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21599,7 +22632,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -21629,7 +22662,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -21659,7 +22692,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -21689,7 +22722,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -21738,6 +22771,8 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21748,6 +22783,9 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21766,6 +22804,7 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21796,12 +22835,12 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -21837,12 +22876,12 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -21878,12 +22917,12 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -21919,12 +22958,12 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -21973,6 +23012,8 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21983,6 +23024,9 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22001,6 +23045,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -22019,7 +23064,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -22043,7 +23088,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -22067,7 +23112,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -22091,7 +23136,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -22140,6 +23185,8 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22150,6 +23197,9 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22168,6 +23218,7 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -22192,12 +23243,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -22227,12 +23278,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -22262,12 +23313,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -22297,12 +23348,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -22351,6 +23402,8 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22361,6 +23414,9 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22379,6 +23435,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -22398,7 +23455,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -22423,7 +23480,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -22448,7 +23505,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -22473,7 +23530,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -22522,6 +23579,8 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22532,6 +23591,9 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22550,6 +23612,7 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -22575,12 +23638,12 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -22611,12 +23674,12 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -22647,12 +23710,12 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -22683,12 +23746,12 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -22737,6 +23800,8 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22747,6 +23812,9 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22765,6 +23833,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -22783,7 +23852,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -22807,7 +23876,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -22831,7 +23900,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -22855,7 +23924,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -22904,6 +23973,8 @@ static void lts_aga_fm0_n0_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22914,6 +23985,9 @@ static void lts_aga_fm0_n0_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22932,6 +24006,7 @@ static void lts_aga_fm0_n1_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -22956,12 +24031,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -22991,12 +24066,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -23026,12 +24101,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -23061,12 +24136,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -23115,6 +24190,8 @@ static void lts_aga_fm0_n1_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23125,6 +24202,9 @@ static void lts_aga_fm0_n1_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23143,6 +24223,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -23166,7 +24247,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -23195,7 +24276,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -23224,7 +24305,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -23253,7 +24334,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -23302,6 +24383,8 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23312,6 +24395,9 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23330,6 +24416,7 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -23359,12 +24446,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -23399,12 +24486,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -23439,12 +24526,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -23479,12 +24566,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -23533,6 +24620,8 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23543,6 +24632,9 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23577,6 +24669,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -23595,7 +24688,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -23619,7 +24712,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -23643,7 +24736,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -23667,7 +24760,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -23716,6 +24809,8 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23726,6 +24821,9 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23744,6 +24842,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -23768,12 +24867,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -23803,12 +24902,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -23838,12 +24937,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -23873,12 +24972,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -23927,6 +25026,8 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23937,6 +25038,9 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23971,6 +25075,7 @@ static void lts_aga_fm0_n0_p2_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23990,7 +25095,7 @@ static void lts_aga_fm0_n0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -24023,7 +25128,7 @@ static void lts_aga_fm0_n0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -24056,7 +25161,7 @@ static void lts_aga_fm0_n0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -24089,7 +25194,7 @@ static void lts_aga_fm0_n0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -24170,6 +25275,8 @@ static void lts_aga_fm0_n0_p2_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24180,6 +25287,9 @@ static void lts_aga_fm0_n0_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24198,6 +25308,7 @@ static void lts_aga_fm0_n1_p2_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24223,12 +25334,12 @@ static void lts_aga_fm0_n1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -24267,12 +25378,12 @@ static void lts_aga_fm0_n1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -24311,12 +25422,12 @@ static void lts_aga_fm0_n1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -24355,12 +25466,12 @@ static void lts_aga_fm0_n1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -24441,6 +25552,8 @@ static void lts_aga_fm0_n1_p2_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24451,6 +25564,9 @@ static void lts_aga_fm0_n1_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24469,6 +25585,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24493,7 +25610,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -24531,7 +25648,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -24569,7 +25686,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -24607,7 +25724,7 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -24688,6 +25805,8 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24698,6 +25817,9 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24716,6 +25838,7 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24746,12 +25869,12 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -24795,12 +25918,12 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -24844,12 +25967,12 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -24893,12 +26016,12 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -24979,6 +26102,8 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24989,6 +26114,9 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25055,6 +26183,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -25074,7 +26203,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -25107,7 +26236,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -25140,7 +26269,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -25173,7 +26302,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -25254,6 +26383,8 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25264,6 +26395,9 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25282,6 +26416,7 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -25307,12 +26442,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -25351,12 +26486,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -25395,12 +26530,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -25439,12 +26574,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -25525,6 +26660,8 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25535,6 +26672,9 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25553,6 +26693,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -25577,7 +26718,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -25615,7 +26756,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -25653,7 +26794,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -25691,7 +26832,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -25772,6 +26913,8 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25782,6 +26925,9 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25800,6 +26946,7 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -25830,12 +26977,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -25879,12 +27026,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -25928,12 +27075,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -25977,12 +27124,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -26063,6 +27210,8 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26073,6 +27222,9 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26139,6 +27291,7 @@ static void lts_aga_fm0_n0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -26158,7 +27311,7 @@ static void lts_aga_fm0_n0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -26191,7 +27344,7 @@ static void lts_aga_fm0_n0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -26224,7 +27377,7 @@ static void lts_aga_fm0_n0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -26257,7 +27410,7 @@ static void lts_aga_fm0_n0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -26338,6 +27491,8 @@ static void lts_aga_fm0_n0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26348,6 +27503,9 @@ static void lts_aga_fm0_n0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26366,6 +27524,7 @@ static void lts_aga_fm0_n1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -26391,12 +27550,12 @@ static void lts_aga_fm0_n1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -26435,12 +27594,12 @@ static void lts_aga_fm0_n1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -26479,12 +27638,12 @@ static void lts_aga_fm0_n1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -26523,12 +27682,12 @@ static void lts_aga_fm0_n1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -26609,6 +27768,8 @@ static void lts_aga_fm0_n1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26619,6 +27780,9 @@ static void lts_aga_fm0_n1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26637,6 +27801,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -26661,7 +27826,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -26699,7 +27864,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -26737,7 +27902,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -26775,7 +27940,7 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -26856,6 +28021,8 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26866,6 +28033,9 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26884,6 +28054,7 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -26914,12 +28085,12 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -26963,12 +28134,12 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -27012,12 +28183,12 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -27061,12 +28232,12 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -27147,6 +28318,8 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27157,6 +28330,9 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27175,6 +28351,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -27200,7 +28377,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -27239,7 +28416,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -27278,7 +28455,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -27317,7 +28494,7 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -27398,6 +28575,8 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27408,6 +28587,9 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27426,6 +28608,7 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -27457,12 +28640,12 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -27507,12 +28690,12 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -27557,12 +28740,12 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -27607,12 +28790,12 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -27693,6 +28876,8 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27703,6 +28888,9 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27721,6 +28909,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -27740,7 +28929,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -27773,7 +28962,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -27806,7 +28995,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -27839,7 +29028,7 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -27920,6 +29109,8 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27930,6 +29121,9 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27948,6 +29142,7 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -27973,12 +29168,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -28017,12 +29212,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -28061,12 +29256,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -28105,12 +29300,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -28191,6 +29386,8 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28201,6 +29398,9 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28219,6 +29419,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -28239,7 +29440,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -28273,7 +29474,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -28307,7 +29508,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -28341,7 +29542,7 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
@@ -28422,6 +29623,8 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28432,6 +29635,9 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28450,6 +29656,7 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -28476,12 +29683,12 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -28521,12 +29728,12 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -28566,12 +29773,12 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -28611,12 +29818,12 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6();
@@ -28697,6 +29904,8 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28707,6 +29916,9 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28725,6 +29937,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -28744,7 +29957,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -28777,7 +29990,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -28810,7 +30023,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -28843,7 +30056,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -28924,6 +30137,8 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28934,6 +30149,9 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28952,6 +30170,7 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -28977,12 +30196,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -29021,12 +30240,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -29065,12 +30284,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -29109,12 +30328,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -29195,6 +30414,8 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29205,6 +30426,9 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29223,6 +30447,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -29247,7 +30472,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -29285,7 +30510,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -29323,7 +30548,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -29361,7 +30586,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -29442,6 +30667,8 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29452,6 +30679,9 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29470,6 +30700,7 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -29500,12 +30731,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -29549,12 +30780,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -29598,12 +30829,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -29647,12 +30878,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -29733,6 +30964,8 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29743,6 +30976,9 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29777,6 +31013,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -29796,7 +31033,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -29829,7 +31066,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -29862,7 +31099,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -29895,7 +31132,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -29976,6 +31213,8 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29986,6 +31225,9 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30004,6 +31246,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -30029,12 +31272,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -30073,12 +31316,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -30117,12 +31360,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -30161,12 +31404,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -30247,6 +31490,8 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30257,6 +31502,9 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30291,6 +31539,7 @@ static void lts_aga_fm0_n0_p2_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -30309,7 +31558,7 @@ static void lts_aga_fm0_n0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -30333,7 +31582,7 @@ static void lts_aga_fm0_n0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -30357,7 +31606,7 @@ static void lts_aga_fm0_n0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -30381,7 +31630,7 @@ static void lts_aga_fm0_n0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -30430,6 +31679,8 @@ static void lts_aga_fm0_n0_p2_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30440,6 +31691,9 @@ static void lts_aga_fm0_n0_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30458,6 +31712,7 @@ static void lts_aga_fm0_n1_p2_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -30482,12 +31737,12 @@ static void lts_aga_fm0_n1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -30517,12 +31772,12 @@ static void lts_aga_fm0_n1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -30552,12 +31807,12 @@ static void lts_aga_fm0_n1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -30587,12 +31842,12 @@ static void lts_aga_fm0_n1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -30641,6 +31896,8 @@ static void lts_aga_fm0_n1_p2_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30651,6 +31908,9 @@ static void lts_aga_fm0_n1_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30669,6 +31929,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -30692,7 +31953,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -30721,7 +31982,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -30750,7 +32011,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -30779,7 +32040,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -30828,6 +32089,8 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30838,6 +32101,9 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30856,6 +32122,7 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -30885,12 +32152,12 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -30925,12 +32192,12 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -30965,12 +32232,12 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -31005,12 +32272,12 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -31059,6 +32326,8 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31069,6 +32338,9 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31135,6 +32407,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -31153,7 +32426,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -31177,7 +32450,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -31201,7 +32474,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -31225,7 +32498,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -31274,6 +32547,8 @@ static void lts_aga_fm0_n0_p4_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31284,6 +32559,9 @@ static void lts_aga_fm0_n0_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31302,6 +32580,7 @@ static void lts_aga_fm0_n1_p4_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -31326,12 +32605,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -31361,12 +32640,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -31396,12 +32675,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -31431,12 +32710,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -31485,6 +32764,8 @@ static void lts_aga_fm0_n1_p4_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31495,6 +32776,9 @@ static void lts_aga_fm0_n1_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31513,6 +32797,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -31536,7 +32821,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -31565,7 +32850,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -31594,7 +32879,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -31623,7 +32908,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -31672,6 +32957,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31682,6 +32969,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31700,6 +32990,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -31729,12 +33020,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -31769,12 +33060,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -31809,12 +33100,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -31849,12 +33140,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -31903,6 +33194,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31913,6 +33206,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32139,6 +33435,7 @@ static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -32158,7 +33455,7 @@ static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -32191,7 +33488,7 @@ static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -32224,7 +33521,7 @@ static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -32257,7 +33554,7 @@ static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -32338,6 +33635,8 @@ static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32348,6 +33647,9 @@ static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32366,6 +33668,7 @@ static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -32391,12 +33694,12 @@ static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -32435,12 +33738,12 @@ static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -32479,12 +33782,12 @@ static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -32523,12 +33826,12 @@ static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -32609,6 +33912,8 @@ static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32619,6 +33924,9 @@ static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32637,6 +33945,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -32661,7 +33970,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -32699,7 +34008,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -32737,7 +34046,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -32775,7 +34084,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
@@ -32856,6 +34165,8 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32866,6 +34177,9 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32884,6 +34198,7 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -32914,12 +34229,12 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -32963,12 +34278,12 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -33012,12 +34327,12 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -33061,12 +34376,12 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2();
@@ -33147,6 +34462,8 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33157,6 +34474,9 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33223,6 +34543,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -33242,7 +34563,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -33275,7 +34596,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -33308,7 +34629,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -33341,7 +34662,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -33422,6 +34743,8 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33432,6 +34755,9 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33450,6 +34776,7 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -33475,12 +34802,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -33519,12 +34846,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -33563,12 +34890,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -33607,12 +34934,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -33693,6 +35020,8 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33703,6 +35032,9 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33721,6 +35053,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -33745,7 +35078,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -33783,7 +35116,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -33821,7 +35154,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -33859,7 +35192,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -33940,6 +35273,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33950,6 +35285,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33968,6 +35306,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -33998,12 +35337,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -34047,12 +35386,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -34096,12 +35435,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -34145,12 +35484,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -34231,6 +35570,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34241,6 +35582,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34467,6 +35811,7 @@ static void lts_aga_fm0_n0_p2_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -34480,7 +35825,7 @@ static void lts_aga_fm0_n0_p2_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -34498,7 +35843,7 @@ static void lts_aga_fm0_n0_p2_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -34516,7 +35861,7 @@ static void lts_aga_fm0_n0_p2_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -34534,7 +35879,7 @@ static void lts_aga_fm0_n0_p2_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -34582,6 +35927,8 @@ static void lts_aga_fm0_n0_p2_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34592,6 +35939,9 @@ static void lts_aga_fm0_n0_p2_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34610,6 +35960,7 @@ static void lts_aga_fm0_n1_p2_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -34623,10 +35974,10 @@ static void lts_aga_fm0_n1_p2_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -34644,10 +35995,10 @@ static void lts_aga_fm0_n1_p2_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -34665,10 +36016,10 @@ static void lts_aga_fm0_n1_p2_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -34686,10 +36037,10 @@ static void lts_aga_fm0_n1_p2_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -34737,6 +36088,8 @@ static void lts_aga_fm0_n1_p2_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34747,6 +36100,9 @@ static void lts_aga_fm0_n1_p2_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34765,6 +36121,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -34783,7 +36140,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -34806,7 +36163,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -34829,7 +36186,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -34852,7 +36209,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -34900,6 +36257,8 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34910,6 +36269,9 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34928,6 +36290,7 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -34946,10 +36309,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -34972,10 +36335,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -34998,10 +36361,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -35024,10 +36387,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -35075,6 +36438,8 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35085,6 +36450,9 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35391,6 +36759,7 @@ static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -35405,7 +36774,7 @@ static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -35432,7 +36801,7 @@ static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -35459,7 +36828,7 @@ static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -35486,7 +36855,7 @@ static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -35566,6 +36935,8 @@ static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35576,6 +36947,9 @@ static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35594,6 +36968,7 @@ static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -35608,10 +36983,10 @@ static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -35638,10 +37013,10 @@ static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -35668,10 +37043,10 @@ static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -35698,10 +37073,10 @@ static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -35781,6 +37156,8 @@ static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35791,6 +37168,9 @@ static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35809,6 +37189,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -35828,7 +37209,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -35860,7 +37241,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -35892,7 +37273,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -35924,7 +37305,7 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2();
@@ -36004,6 +37385,8 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -36014,6 +37397,9 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -36032,6 +37418,7 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -36051,10 +37438,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -36086,10 +37473,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -36121,10 +37508,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -36156,10 +37543,10 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 15) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2();
@@ -36239,6 +37626,8 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -36249,6 +37638,9 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
index 80c545220e56e4ee5f93cacba99ec362029cd5f7..5a07e1c4fd751d7d805331b50e7a7d94d49982e3 100644 (file)
@@ -15,6 +15,7 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -31,7 +32,7 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -54,6 +55,8 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -64,6 +67,9 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -82,6 +88,7 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -98,10 +105,10 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -124,6 +131,8 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -134,6 +143,9 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -152,6 +164,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -173,7 +186,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -196,6 +209,8 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -206,6 +221,9 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -224,6 +242,7 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -245,10 +264,10 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -271,6 +290,8 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -281,6 +302,9 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -347,6 +371,7 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -363,7 +388,7 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8();
@@ -386,6 +411,8 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -396,6 +423,9 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -414,6 +444,7 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -430,10 +461,10 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8();
@@ -456,6 +487,8 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -466,6 +499,9 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -484,6 +520,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -505,7 +542,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8();
@@ -528,6 +565,8 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -538,6 +577,9 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -556,6 +598,7 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -577,10 +620,10 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8();
@@ -603,6 +646,8 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -613,6 +658,9 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -647,6 +695,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -663,7 +712,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8();
@@ -686,6 +735,8 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -696,6 +747,9 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -714,6 +768,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -730,10 +785,10 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8();
@@ -756,6 +811,8 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -766,6 +823,9 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -800,6 +860,7 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -817,7 +878,7 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -856,6 +917,8 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -866,6 +929,9 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -884,6 +950,7 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -901,10 +968,10 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -943,6 +1010,8 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -953,6 +1022,9 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -971,6 +1043,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -993,7 +1066,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -1032,6 +1105,8 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1042,6 +1117,9 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1060,6 +1138,7 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1082,10 +1161,10 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -1124,6 +1203,8 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1134,6 +1215,9 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1200,6 +1284,7 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1217,7 +1302,7 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8();
@@ -1256,6 +1341,8 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1266,6 +1353,9 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1284,6 +1374,7 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1301,10 +1392,10 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8();
@@ -1343,6 +1434,8 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1353,6 +1446,9 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1371,6 +1467,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1393,7 +1490,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8();
@@ -1432,6 +1529,8 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1442,6 +1541,9 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1460,6 +1562,7 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1482,10 +1585,10 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8();
@@ -1524,6 +1627,8 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1534,6 +1639,9 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1568,6 +1676,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1585,7 +1694,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8();
@@ -1624,6 +1733,8 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1634,6 +1745,9 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1652,6 +1766,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1669,10 +1784,10 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8();
@@ -1711,6 +1826,8 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1721,6 +1838,9 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1755,6 +1875,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -1771,7 +1892,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -1795,6 +1916,8 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1805,6 +1928,9 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1819,6 +1945,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -1835,7 +1962,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -1855,7 +1982,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -1880,6 +2007,8 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1890,6 +2019,9 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1904,6 +2036,7 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -1920,10 +2053,10 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -1947,6 +2080,8 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1957,6 +2092,9 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1971,6 +2109,7 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -1987,10 +2126,10 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -2010,10 +2149,10 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -2038,6 +2177,8 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2048,6 +2189,9 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2062,6 +2206,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2083,7 +2228,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -2107,6 +2252,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2117,6 +2264,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2131,6 +2281,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2152,7 +2303,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -2177,7 +2328,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -2202,6 +2353,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2212,6 +2365,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2226,6 +2382,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2247,10 +2404,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -2274,6 +2431,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2284,6 +2443,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2298,6 +2460,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2319,10 +2482,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -2347,10 +2510,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -2375,6 +2538,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2385,6 +2550,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2527,6 +2695,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2544,7 +2713,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -2584,6 +2753,8 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2594,6 +2765,9 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2608,6 +2782,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2625,7 +2800,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -2653,7 +2828,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -2687,6 +2862,8 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2697,6 +2874,9 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2711,6 +2891,7 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2728,10 +2909,10 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -2771,6 +2952,8 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2781,6 +2964,9 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2795,6 +2981,7 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2812,10 +2999,10 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -2843,10 +3030,10 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -2880,6 +3067,8 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2890,6 +3079,9 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2904,6 +3096,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2926,7 +3119,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -2966,6 +3159,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2976,6 +3171,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2990,6 +3188,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3012,7 +3211,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -3045,7 +3244,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -3079,6 +3278,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3089,6 +3290,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3103,6 +3307,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3125,10 +3330,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -3168,6 +3373,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3178,6 +3385,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3192,6 +3402,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3214,10 +3425,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -3250,10 +3461,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -3287,6 +3498,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3297,6 +3510,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3759,6 +3975,7 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -3780,7 +3997,7 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -3807,7 +4024,7 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -3842,6 +4059,8 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3852,6 +4071,9 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3870,6 +4092,7 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -3897,12 +4120,12 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -3935,12 +4158,12 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -3975,6 +4198,8 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3985,6 +4210,9 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4003,6 +4231,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -4029,7 +4258,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -4061,7 +4290,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -4096,6 +4325,8 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4106,6 +4337,9 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4124,6 +4358,7 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -4156,12 +4391,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -4199,12 +4434,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -4239,6 +4474,8 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4249,6 +4486,9 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4315,6 +4555,7 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -4336,7 +4577,7 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -4363,7 +4604,7 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -4398,6 +4639,8 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4408,6 +4651,9 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4426,6 +4672,7 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -4453,12 +4700,12 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -4491,12 +4738,12 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -4531,6 +4778,8 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4541,6 +4790,9 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4559,6 +4811,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -4585,7 +4838,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -4617,7 +4870,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -4652,6 +4905,8 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4662,6 +4917,9 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4680,6 +4938,7 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -4712,12 +4971,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -4755,12 +5014,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -4795,6 +5054,8 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4805,6 +5066,9 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4839,6 +5103,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -4860,7 +5125,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -4887,7 +5152,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -4922,6 +5187,8 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4932,6 +5199,9 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4950,6 +5220,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -4977,12 +5248,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -5015,12 +5286,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -5055,6 +5326,8 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5065,6 +5338,9 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5099,6 +5375,7 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5121,7 +5398,7 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -5157,7 +5434,7 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -5216,6 +5493,8 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5226,6 +5505,9 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5244,6 +5526,7 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5272,12 +5555,12 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -5319,12 +5602,12 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -5383,6 +5666,8 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5393,6 +5678,9 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5411,6 +5699,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5438,7 +5727,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -5479,7 +5768,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -5538,6 +5827,8 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5548,6 +5839,9 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5566,6 +5860,7 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5599,12 +5894,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -5651,12 +5946,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -5715,6 +6010,8 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5725,6 +6022,9 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5791,6 +6091,7 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5813,7 +6114,7 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -5849,7 +6150,7 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -5908,6 +6209,8 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5918,6 +6221,9 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5936,6 +6242,7 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5964,12 +6271,12 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -6011,12 +6318,12 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -6075,6 +6382,8 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6085,6 +6394,9 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6103,6 +6415,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -6130,7 +6443,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -6171,7 +6484,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -6230,6 +6543,8 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6240,6 +6555,9 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6258,6 +6576,7 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -6291,12 +6610,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -6343,12 +6662,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -6407,6 +6726,8 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6417,6 +6738,9 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6451,6 +6775,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -6473,7 +6798,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -6509,7 +6834,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -6568,6 +6893,8 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6578,6 +6905,9 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6596,6 +6926,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -6624,12 +6955,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -6671,12 +7002,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -6735,6 +7066,8 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6745,6 +7078,9 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6779,6 +7115,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6795,7 +7132,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -6816,7 +7153,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -6850,6 +7187,8 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6860,6 +7199,9 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6878,6 +7220,7 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6894,10 +7237,10 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -6918,10 +7261,10 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -6955,6 +7298,8 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6965,6 +7310,9 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6983,6 +7331,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -7004,7 +7353,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -7030,7 +7379,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -7064,6 +7413,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7074,6 +7425,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7092,6 +7446,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -7113,10 +7468,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -7142,10 +7497,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -7179,6 +7534,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7189,6 +7546,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7335,6 +7695,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7352,7 +7713,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -7382,7 +7743,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -7440,6 +7801,8 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7450,6 +7813,9 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7468,6 +7834,7 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7485,10 +7852,10 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -7518,10 +7885,10 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -7579,6 +7946,8 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7589,6 +7958,9 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7607,6 +7979,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7629,7 +8002,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -7664,7 +8037,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4();
@@ -7722,6 +8095,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7732,6 +8107,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7750,6 +8128,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7772,10 +8151,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -7810,10 +8189,10 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4();
@@ -7871,6 +8250,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7881,6 +8262,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8347,6 +8731,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -8368,7 +8753,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -8395,7 +8780,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -8422,7 +8807,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -8449,7 +8834,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -8506,6 +8891,8 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8516,6 +8903,9 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8534,6 +8924,7 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -8561,12 +8952,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -8599,12 +8990,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -8637,12 +9028,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -8675,12 +9066,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -8737,6 +9128,8 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8747,6 +9140,9 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8765,6 +9161,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -8791,7 +9188,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -8823,7 +9220,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -8855,7 +9252,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -8887,7 +9284,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -8944,6 +9341,8 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8954,6 +9353,9 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8972,6 +9374,7 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9004,12 +9407,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -9047,12 +9450,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -9090,12 +9493,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -9133,12 +9536,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -9195,6 +9598,8 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9205,6 +9610,9 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9271,6 +9679,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9292,7 +9701,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -9319,7 +9728,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -9346,7 +9755,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -9373,7 +9782,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -9430,6 +9839,8 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9440,6 +9851,9 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9458,6 +9872,7 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9485,12 +9900,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -9523,12 +9938,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -9561,12 +9976,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -9599,12 +10014,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -9661,6 +10076,8 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9671,6 +10088,9 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9689,6 +10109,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9715,7 +10136,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -9747,7 +10168,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -9779,7 +10200,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -9811,7 +10232,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -9868,6 +10289,8 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9878,6 +10301,9 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9896,6 +10322,7 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9928,12 +10355,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -9971,12 +10398,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -10014,12 +10441,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -10057,12 +10484,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -10119,6 +10546,8 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10129,6 +10558,9 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10163,6 +10595,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -10184,7 +10617,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -10211,7 +10644,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -10238,7 +10671,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -10265,7 +10698,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -10322,6 +10755,8 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10332,6 +10767,9 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10350,6 +10788,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -10377,12 +10816,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -10415,12 +10854,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -10453,12 +10892,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -10491,12 +10930,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -10553,6 +10992,8 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10563,6 +11004,9 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10597,6 +11041,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10619,7 +11064,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -10655,7 +11100,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -10691,7 +11136,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -10727,7 +11172,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -10824,6 +11269,8 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10834,6 +11281,9 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10852,6 +11302,7 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10880,12 +11331,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -10927,12 +11378,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -10974,12 +11425,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -11021,12 +11472,12 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -11123,6 +11574,8 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11133,6 +11586,9 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11151,6 +11607,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11178,7 +11635,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -11219,7 +11676,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -11260,7 +11717,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -11301,7 +11758,7 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -11398,6 +11855,8 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11408,6 +11867,9 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11426,6 +11888,7 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11459,12 +11922,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -11511,12 +11974,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -11563,12 +12026,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -11615,12 +12078,12 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -11717,6 +12180,8 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11727,6 +12192,9 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11793,6 +12261,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11815,7 +12284,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -11851,7 +12320,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -11887,7 +12356,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -11923,7 +12392,7 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -12020,6 +12489,8 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12030,6 +12501,9 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12048,6 +12522,7 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12076,12 +12551,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -12123,12 +12598,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -12170,12 +12645,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -12217,12 +12692,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -12319,6 +12794,8 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12329,6 +12806,9 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12347,6 +12827,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12374,7 +12855,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -12415,7 +12896,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -12456,7 +12937,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -12497,7 +12978,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -12594,6 +13075,8 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12604,6 +13087,9 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12622,6 +13108,7 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12655,12 +13142,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -12707,12 +13194,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -12759,12 +13246,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -12811,12 +13298,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -12913,6 +13400,8 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12923,6 +13412,9 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12957,6 +13449,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12979,7 +13472,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -13015,7 +13508,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -13051,7 +13544,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -13087,7 +13580,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
@@ -13184,6 +13677,8 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13194,6 +13689,9 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13212,6 +13710,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -13240,12 +13739,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -13287,12 +13786,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -13334,12 +13833,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -13381,12 +13880,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8();
@@ -13483,6 +13982,8 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13493,6 +13994,9 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13527,6 +14031,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -13548,7 +14053,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -13575,7 +14080,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -13602,7 +14107,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -13629,7 +14134,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -13686,6 +14191,8 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13696,6 +14203,9 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13714,6 +14224,7 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -13741,12 +14252,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -13779,12 +14290,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -13817,12 +14328,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -13855,12 +14366,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -13917,6 +14428,8 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13927,6 +14440,9 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13945,6 +14461,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -13971,7 +14488,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -14003,7 +14520,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -14035,7 +14552,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -14067,7 +14584,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -14124,6 +14641,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14134,6 +14653,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14152,6 +14674,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -14184,12 +14707,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -14227,12 +14750,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -14270,12 +14793,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -14313,12 +14836,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -14375,6 +14898,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14385,6 +14910,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14531,6 +15059,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -14553,7 +15082,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -14589,7 +15118,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -14625,7 +15154,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -14661,7 +15190,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -14758,6 +15287,8 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14768,6 +15299,9 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14786,6 +15320,7 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -14814,12 +15349,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -14861,12 +15396,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -14908,12 +15443,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -14955,12 +15490,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -15057,6 +15592,8 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15067,6 +15604,9 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15085,6 +15625,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15112,7 +15653,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -15153,7 +15694,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -15194,7 +15735,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -15235,7 +15776,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
@@ -15332,6 +15873,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15342,6 +15885,9 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15360,6 +15906,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15393,12 +15940,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -15445,12 +15992,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -15497,12 +16044,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -15549,12 +16096,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4();
@@ -15651,6 +16198,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15661,6 +16210,9 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
index 4f0d3dbafc52258f5cde498d5491d7b19bb8e8f6..79553f879d69664d08813e21fcc6052bf8f4fb35 100644 (file)
@@ -15,6 +15,7 @@ static void lts_aga_fm1_n0_p2_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -28,7 +29,7 @@ static void lts_aga_fm1_n0_p2_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -49,6 +50,8 @@ static void lts_aga_fm1_n0_p2_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -59,6 +62,9 @@ static void lts_aga_fm1_n0_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -77,6 +83,7 @@ static void lts_aga_fm1_n1_p2_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -90,10 +97,10 @@ static void lts_aga_fm1_n1_p2_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -114,6 +121,8 @@ static void lts_aga_fm1_n1_p2_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -124,6 +133,9 @@ static void lts_aga_fm1_n1_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -142,6 +154,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -160,7 +173,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -181,6 +194,8 @@ static void lts_aga_fm1_dpf0_p2_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -191,6 +206,9 @@ static void lts_aga_fm1_dpf0_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -209,6 +227,7 @@ static void lts_aga_fm1_dpf1_p2_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -227,10 +246,10 @@ static void lts_aga_fm1_dpf1_p2_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -251,6 +270,8 @@ static void lts_aga_fm1_dpf1_p2_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -261,6 +282,9 @@ static void lts_aga_fm1_dpf1_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -327,6 +351,7 @@ static void lts_aga_fm1_n0_p4_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -340,7 +365,7 @@ static void lts_aga_fm1_n0_p4_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -361,6 +386,8 @@ static void lts_aga_fm1_n0_p4_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -371,6 +398,9 @@ static void lts_aga_fm1_n0_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -389,6 +419,7 @@ static void lts_aga_fm1_n1_p4_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -402,10 +433,10 @@ static void lts_aga_fm1_n1_p4_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -426,6 +457,8 @@ static void lts_aga_fm1_n1_p4_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -436,6 +469,9 @@ static void lts_aga_fm1_n1_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -454,6 +490,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -472,7 +509,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -493,6 +530,8 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -503,6 +542,9 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -521,6 +563,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -539,10 +582,10 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -563,6 +606,8 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -573,6 +618,9 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -639,6 +687,7 @@ static void lts_aga_fm1_n0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -652,7 +701,7 @@ static void lts_aga_fm1_n0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -673,6 +722,8 @@ static void lts_aga_fm1_n0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -683,6 +734,9 @@ static void lts_aga_fm1_n0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -701,6 +755,7 @@ static void lts_aga_fm1_n1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -714,10 +769,10 @@ static void lts_aga_fm1_n1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -738,6 +793,8 @@ static void lts_aga_fm1_n1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -748,6 +805,9 @@ static void lts_aga_fm1_n1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -766,6 +826,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -784,7 +845,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -805,6 +866,8 @@ static void lts_aga_fm1_dpf0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -815,6 +878,9 @@ static void lts_aga_fm1_dpf0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -833,6 +899,7 @@ static void lts_aga_fm1_dpf1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -851,10 +918,10 @@ static void lts_aga_fm1_dpf1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -875,6 +942,8 @@ static void lts_aga_fm1_dpf1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -885,6 +954,9 @@ static void lts_aga_fm1_dpf1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -903,6 +975,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -922,7 +995,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -943,6 +1016,8 @@ static void lts_aga_fm1_ehb0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -953,6 +1028,9 @@ static void lts_aga_fm1_ehb0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -971,6 +1049,7 @@ static void lts_aga_fm1_ehb1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -990,10 +1069,10 @@ static void lts_aga_fm1_ehb1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -1014,6 +1093,8 @@ static void lts_aga_fm1_ehb1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1024,6 +1105,9 @@ static void lts_aga_fm1_ehb1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1042,6 +1126,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1055,7 +1140,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -1076,6 +1161,8 @@ static void lts_aga_fm1_ham0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1086,6 +1173,9 @@ static void lts_aga_fm1_ham0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1104,6 +1194,7 @@ static void lts_aga_fm1_ham1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1117,10 +1208,10 @@ static void lts_aga_fm1_ham1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -1141,6 +1232,8 @@ static void lts_aga_fm1_ham1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1151,6 +1244,9 @@ static void lts_aga_fm1_ham1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1169,6 +1265,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1183,7 +1280,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -1204,6 +1301,8 @@ static void lts_aga_fm1_kehb0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1214,6 +1313,9 @@ static void lts_aga_fm1_kehb0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1232,6 +1334,7 @@ static void lts_aga_fm1_kehb1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1246,10 +1349,10 @@ static void lts_aga_fm1_kehb1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -1270,6 +1373,8 @@ static void lts_aga_fm1_kehb1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1280,6 +1385,9 @@ static void lts_aga_fm1_kehb1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1298,6 +1406,7 @@ static void lts_aga_fm1_n0_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1311,7 +1420,7 @@ static void lts_aga_fm1_n0_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -1332,6 +1441,8 @@ static void lts_aga_fm1_n0_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1342,6 +1453,9 @@ static void lts_aga_fm1_n0_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1360,6 +1474,7 @@ static void lts_aga_fm1_n1_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1373,10 +1488,10 @@ static void lts_aga_fm1_n1_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -1397,6 +1512,8 @@ static void lts_aga_fm1_n1_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1407,6 +1524,9 @@ static void lts_aga_fm1_n1_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1425,6 +1545,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1443,7 +1564,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -1464,6 +1585,8 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1474,6 +1597,9 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1492,6 +1618,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1510,10 +1637,10 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -1534,6 +1661,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1544,6 +1673,9 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1578,6 +1710,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1591,7 +1724,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -1612,6 +1745,8 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1622,6 +1757,9 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1640,6 +1778,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1653,10 +1792,10 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -1677,6 +1816,8 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1687,6 +1828,9 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1721,6 +1865,7 @@ static void lts_aga_fm1_n0_p2_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1735,7 +1880,7 @@ static void lts_aga_fm1_n0_p2_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -1770,6 +1915,8 @@ static void lts_aga_fm1_n0_p2_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1780,6 +1927,9 @@ static void lts_aga_fm1_n0_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1798,6 +1948,7 @@ static void lts_aga_fm1_n1_p2_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1812,10 +1963,10 @@ static void lts_aga_fm1_n1_p2_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -1850,6 +2001,8 @@ static void lts_aga_fm1_n1_p2_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1860,6 +2013,9 @@ static void lts_aga_fm1_n1_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1878,6 +2034,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1897,7 +2054,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -1932,6 +2089,8 @@ static void lts_aga_fm1_dpf0_p2_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1942,6 +2101,9 @@ static void lts_aga_fm1_dpf0_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1960,6 +2122,7 @@ static void lts_aga_fm1_dpf1_p2_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1979,10 +2142,10 @@ static void lts_aga_fm1_dpf1_p2_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -2017,6 +2180,8 @@ static void lts_aga_fm1_dpf1_p2_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2027,6 +2192,9 @@ static void lts_aga_fm1_dpf1_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2093,6 +2261,7 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2107,7 +2276,7 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -2142,6 +2311,8 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2152,6 +2323,9 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2170,6 +2344,7 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2184,10 +2359,10 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -2222,6 +2397,8 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2232,6 +2409,9 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2250,6 +2430,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2269,7 +2450,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -2304,6 +2485,8 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2314,6 +2497,9 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2332,6 +2518,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2351,10 +2538,10 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -2389,6 +2576,8 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2399,6 +2588,9 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2465,6 +2657,7 @@ static void lts_aga_fm1_n0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2479,7 +2672,7 @@ static void lts_aga_fm1_n0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -2514,6 +2707,8 @@ static void lts_aga_fm1_n0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2524,6 +2719,9 @@ static void lts_aga_fm1_n0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2542,6 +2740,7 @@ static void lts_aga_fm1_n1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2556,10 +2755,10 @@ static void lts_aga_fm1_n1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -2594,6 +2793,8 @@ static void lts_aga_fm1_n1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2604,6 +2805,9 @@ static void lts_aga_fm1_n1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2622,6 +2826,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2641,7 +2846,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -2676,6 +2881,8 @@ static void lts_aga_fm1_dpf0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2686,6 +2893,9 @@ static void lts_aga_fm1_dpf0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2704,6 +2914,7 @@ static void lts_aga_fm1_dpf1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2723,10 +2934,10 @@ static void lts_aga_fm1_dpf1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -2761,6 +2972,8 @@ static void lts_aga_fm1_dpf1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2771,6 +2984,9 @@ static void lts_aga_fm1_dpf1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2789,6 +3005,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2809,7 +3026,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -2844,6 +3061,8 @@ static void lts_aga_fm1_ehb0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2854,6 +3073,9 @@ static void lts_aga_fm1_ehb0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2872,6 +3094,7 @@ static void lts_aga_fm1_ehb1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2892,10 +3115,10 @@ static void lts_aga_fm1_ehb1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -2930,6 +3153,8 @@ static void lts_aga_fm1_ehb1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2940,6 +3165,9 @@ static void lts_aga_fm1_ehb1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2958,6 +3186,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2972,7 +3201,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -3007,6 +3236,8 @@ static void lts_aga_fm1_ham0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3017,6 +3248,9 @@ static void lts_aga_fm1_ham0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3035,6 +3269,7 @@ static void lts_aga_fm1_ham1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3049,10 +3284,10 @@ static void lts_aga_fm1_ham1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -3087,6 +3322,8 @@ static void lts_aga_fm1_ham1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3097,6 +3334,9 @@ static void lts_aga_fm1_ham1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3115,6 +3355,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3130,7 +3371,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -3165,6 +3406,8 @@ static void lts_aga_fm1_kehb0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3175,6 +3418,9 @@ static void lts_aga_fm1_kehb0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3193,6 +3439,7 @@ static void lts_aga_fm1_kehb1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3208,10 +3455,10 @@ static void lts_aga_fm1_kehb1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -3246,6 +3493,8 @@ static void lts_aga_fm1_kehb1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3256,6 +3505,9 @@ static void lts_aga_fm1_kehb1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3274,6 +3526,7 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3288,7 +3541,7 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3323,6 +3576,8 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3333,6 +3588,9 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3351,6 +3609,7 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3365,10 +3624,10 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3403,6 +3662,8 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3413,6 +3674,9 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3431,6 +3695,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3450,7 +3715,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3485,6 +3750,8 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3495,6 +3762,9 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3513,6 +3783,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3532,10 +3803,10 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3570,6 +3841,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3580,6 +3853,9 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3614,6 +3890,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3628,7 +3905,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3663,6 +3940,8 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3673,6 +3952,9 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3691,6 +3973,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3705,10 +3988,10 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3743,6 +4026,8 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3753,6 +4038,9 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3787,6 +4075,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -3800,7 +4089,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -3822,6 +4111,8 @@ static void lts_aga_fm1_n0_p2_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3832,6 +4123,9 @@ static void lts_aga_fm1_n0_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3846,6 +4140,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -3859,7 +4154,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -3876,7 +4171,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -3898,6 +4193,8 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3908,6 +4205,9 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3922,6 +4222,7 @@ static void lts_aga_fm1_n1_p2_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -3935,10 +4236,10 @@ static void lts_aga_fm1_n1_p2_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -3960,6 +4261,8 @@ static void lts_aga_fm1_n1_p2_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3970,6 +4273,9 @@ static void lts_aga_fm1_n1_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3984,6 +4290,7 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -3997,10 +4304,10 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -4017,10 +4324,10 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -4042,6 +4349,8 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4052,6 +4361,9 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4066,6 +4378,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4084,7 +4397,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -4106,6 +4419,8 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4116,6 +4431,9 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4130,6 +4448,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4148,7 +4467,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -4170,7 +4489,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -4192,6 +4511,8 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4202,6 +4523,9 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4216,6 +4540,7 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4234,10 +4559,10 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -4259,6 +4584,8 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4269,6 +4596,9 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4283,6 +4613,7 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4301,10 +4632,10 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -4326,10 +4657,10 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -4351,6 +4682,8 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4361,6 +4694,9 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4423,6 +4759,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4436,7 +4773,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4458,6 +4795,8 @@ static void lts_aga_fm1_n0_p4_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4468,6 +4807,9 @@ static void lts_aga_fm1_n0_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4482,6 +4824,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4495,7 +4838,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4512,7 +4855,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4534,6 +4877,8 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4544,6 +4889,9 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4558,6 +4906,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4571,10 +4920,10 @@ static void lts_aga_fm1_n1_p4_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4596,6 +4945,8 @@ static void lts_aga_fm1_n1_p4_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4606,6 +4957,9 @@ static void lts_aga_fm1_n1_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4620,6 +4974,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4633,10 +4988,10 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4653,10 +5008,10 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4678,6 +5033,8 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4688,6 +5045,9 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4702,6 +5062,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4720,7 +5081,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4742,6 +5103,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4752,6 +5115,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4766,6 +5132,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4784,7 +5151,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4806,7 +5173,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4828,6 +5195,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4838,6 +5207,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4852,6 +5224,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4870,10 +5243,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4895,6 +5268,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4905,6 +5280,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4919,6 +5297,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4937,10 +5316,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4962,10 +5341,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4987,6 +5366,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4997,6 +5378,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5059,6 +5443,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5072,7 +5457,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5094,6 +5479,8 @@ static void lts_aga_fm1_n0_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5104,6 +5491,9 @@ static void lts_aga_fm1_n0_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5118,6 +5508,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5131,7 +5522,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5148,7 +5539,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5170,6 +5561,8 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5180,6 +5573,9 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5194,6 +5590,7 @@ static void lts_aga_fm1_n1_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5207,10 +5604,10 @@ static void lts_aga_fm1_n1_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5232,6 +5629,8 @@ static void lts_aga_fm1_n1_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5242,6 +5641,9 @@ static void lts_aga_fm1_n1_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5256,6 +5658,7 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5269,10 +5672,10 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5289,10 +5692,10 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5314,6 +5717,8 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5324,6 +5729,9 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5338,6 +5746,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5356,7 +5765,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5378,6 +5787,8 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5388,6 +5799,9 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5402,6 +5816,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5420,7 +5835,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5442,7 +5857,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5464,6 +5879,8 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5474,6 +5891,9 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5488,6 +5908,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5506,10 +5927,10 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5531,6 +5952,8 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5541,6 +5964,9 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5555,6 +5981,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5573,10 +6000,10 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5598,10 +6025,10 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5623,6 +6050,8 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5633,6 +6062,9 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5647,6 +6079,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5666,7 +6099,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5688,6 +6121,8 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5698,6 +6133,9 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5712,6 +6150,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5731,7 +6170,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5754,7 +6193,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5776,6 +6215,8 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5786,6 +6227,9 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5800,6 +6244,7 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5819,10 +6264,10 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5844,6 +6289,8 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5854,6 +6301,9 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5868,6 +6318,7 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5887,10 +6338,10 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5913,10 +6364,10 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5938,6 +6389,8 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5948,6 +6401,9 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5962,6 +6418,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5975,7 +6432,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -5991,7 +6448,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -6012,6 +6469,8 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6022,6 +6481,9 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6036,6 +6498,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6049,7 +6512,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -6066,7 +6529,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -6088,6 +6551,8 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6098,6 +6563,9 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6112,6 +6580,7 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6125,10 +6594,10 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -6144,10 +6613,10 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -6168,6 +6637,8 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6178,6 +6649,9 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6192,6 +6666,7 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6205,10 +6680,10 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -6225,10 +6700,10 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -6250,6 +6725,8 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6260,6 +6737,9 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6274,6 +6754,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6288,7 +6769,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -6310,6 +6791,8 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6320,6 +6803,9 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6334,6 +6820,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6348,7 +6835,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -6366,7 +6853,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -6388,6 +6875,8 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6398,6 +6887,9 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6412,6 +6904,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6426,10 +6919,10 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -6451,6 +6944,8 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6461,6 +6956,9 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6475,6 +6973,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6489,10 +6988,10 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -6510,10 +7009,10 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -6535,6 +7034,8 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6545,6 +7046,9 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6559,6 +7063,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6572,7 +7077,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -6594,6 +7099,8 @@ static void lts_aga_fm1_n0_p8_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6604,6 +7111,9 @@ static void lts_aga_fm1_n0_p8_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6618,6 +7128,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6631,7 +7142,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -6648,7 +7159,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -6670,6 +7181,8 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6680,6 +7193,9 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6694,6 +7210,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6707,10 +7224,10 @@ static void lts_aga_fm1_n1_p8_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -6732,6 +7249,8 @@ static void lts_aga_fm1_n1_p8_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6742,6 +7261,9 @@ static void lts_aga_fm1_n1_p8_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6756,6 +7278,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6769,10 +7292,10 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -6789,10 +7312,10 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -6814,6 +7337,8 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6824,6 +7349,9 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6838,6 +7366,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6856,7 +7385,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -6878,6 +7407,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6888,6 +7419,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6902,6 +7436,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6920,7 +7455,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -6942,7 +7477,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -6964,6 +7499,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6974,6 +7511,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6988,6 +7528,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7006,10 +7547,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -7031,6 +7572,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7041,6 +7584,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7055,6 +7601,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7073,10 +7620,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -7098,10 +7645,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -7123,6 +7670,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7133,6 +7682,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7163,6 +7715,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7176,7 +7729,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -7192,7 +7745,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -7213,6 +7766,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7223,6 +7778,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7237,6 +7795,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7250,7 +7809,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -7267,7 +7826,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -7289,6 +7848,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7299,6 +7860,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7313,6 +7877,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7326,10 +7891,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -7345,10 +7910,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -7369,6 +7934,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7379,6 +7946,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7393,6 +7963,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7406,10 +7977,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -7426,10 +7997,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -7451,6 +8022,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7461,6 +8034,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7491,6 +8067,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7505,7 +8082,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -7541,6 +8118,8 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7551,6 +8130,9 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7565,6 +8147,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7579,7 +8162,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -7604,7 +8187,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -7633,6 +8216,8 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7643,6 +8228,9 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7657,6 +8245,7 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7671,10 +8260,10 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -7710,6 +8299,8 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7720,6 +8311,9 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7734,6 +8328,7 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7748,10 +8343,10 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -7776,10 +8371,10 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -7808,6 +8403,8 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7818,6 +8415,9 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7832,6 +8432,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7851,7 +8452,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -7887,6 +8488,8 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7897,6 +8500,9 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7911,6 +8517,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7930,7 +8537,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -7960,7 +8567,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -7989,6 +8596,8 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7999,6 +8608,9 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8013,6 +8625,7 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8032,10 +8645,10 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -8071,6 +8684,8 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8081,6 +8696,9 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8095,6 +8713,7 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8114,10 +8733,10 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -8147,10 +8766,10 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -8179,6 +8798,8 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8189,6 +8810,9 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8251,6 +8875,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8265,7 +8890,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8301,6 +8926,8 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8311,6 +8938,9 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8325,6 +8955,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8339,7 +8970,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8364,7 +8995,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8393,6 +9024,8 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8403,6 +9036,9 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8417,6 +9053,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8431,10 +9068,10 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8470,6 +9107,8 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8480,6 +9119,9 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8494,6 +9136,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8508,10 +9151,10 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8536,10 +9179,10 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8568,6 +9211,8 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8578,6 +9223,9 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8592,6 +9240,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8611,7 +9260,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8647,6 +9296,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8657,6 +9308,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8671,6 +9325,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8690,7 +9345,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8720,7 +9375,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8749,6 +9404,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8759,6 +9416,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8773,6 +9433,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8792,10 +9453,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8831,6 +9492,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8841,6 +9504,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8855,6 +9521,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8874,10 +9541,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8907,10 +9574,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8939,6 +9606,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8949,6 +9618,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9011,6 +9683,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9025,7 +9698,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9061,6 +9734,8 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9071,6 +9746,9 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9085,6 +9763,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9099,7 +9778,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9124,7 +9803,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9153,6 +9832,8 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9163,6 +9844,9 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9177,6 +9861,7 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9191,10 +9876,10 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9230,6 +9915,8 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9240,6 +9927,9 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9254,6 +9944,7 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9268,10 +9959,10 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9296,10 +9987,10 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9328,6 +10019,8 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9338,6 +10031,9 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9352,6 +10048,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9371,7 +10068,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9407,6 +10104,8 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9417,6 +10116,9 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9431,6 +10133,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9450,7 +10153,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9480,7 +10183,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9509,6 +10212,8 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9519,6 +10224,9 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9533,6 +10241,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9552,10 +10261,10 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9591,6 +10300,8 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9601,6 +10312,9 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9615,6 +10329,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9634,10 +10349,10 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9667,10 +10382,10 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9699,6 +10414,8 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9709,6 +10426,9 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9723,6 +10443,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9743,7 +10464,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9779,6 +10500,8 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9789,6 +10512,9 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9803,6 +10529,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9823,7 +10550,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9854,7 +10581,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9883,6 +10610,8 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9893,6 +10622,9 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9907,6 +10639,7 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9927,10 +10660,10 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -9966,6 +10699,8 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9976,6 +10711,9 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9990,6 +10728,7 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10010,10 +10749,10 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10044,10 +10783,10 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10076,6 +10815,8 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10086,6 +10827,9 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10100,6 +10844,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10114,7 +10859,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10138,7 +10883,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10165,6 +10910,8 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10175,6 +10922,9 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10189,6 +10939,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10203,7 +10954,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10228,7 +10979,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10257,6 +11008,8 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10267,6 +11020,9 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10281,6 +11037,7 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10295,10 +11052,10 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10322,10 +11079,10 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10352,6 +11109,8 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10362,6 +11121,9 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10376,6 +11138,7 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10390,10 +11153,10 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10418,10 +11181,10 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10450,6 +11213,8 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10460,6 +11225,9 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10474,6 +11242,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10489,7 +11258,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10525,6 +11294,8 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10535,6 +11306,9 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10549,6 +11323,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10564,7 +11339,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10590,7 +11365,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10619,6 +11394,8 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10629,6 +11406,9 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10643,6 +11423,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10658,10 +11439,10 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10697,6 +11478,8 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10707,6 +11490,9 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10721,6 +11507,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10736,10 +11523,10 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10765,10 +11552,10 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -10797,6 +11584,8 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10807,6 +11596,9 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10821,6 +11613,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10835,7 +11628,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -10871,6 +11664,8 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10881,6 +11676,9 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10895,6 +11693,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10909,7 +11708,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -10934,7 +11733,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -10963,6 +11762,8 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10973,6 +11774,9 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10987,6 +11791,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11001,10 +11806,10 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11040,6 +11845,8 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11050,6 +11857,9 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11064,6 +11874,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11078,10 +11889,10 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11106,10 +11917,10 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11138,6 +11949,8 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11148,6 +11961,9 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11162,6 +11978,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11181,7 +11998,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11217,6 +12034,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11227,6 +12046,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11241,6 +12063,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11260,7 +12083,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11290,7 +12113,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11319,6 +12142,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11329,6 +12154,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11343,6 +12171,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11362,10 +12191,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11401,6 +12230,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11411,6 +12242,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11425,6 +12259,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11444,10 +12279,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11477,10 +12312,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11509,6 +12344,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11519,6 +12356,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11549,6 +12389,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11563,7 +12404,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11587,7 +12428,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11614,6 +12455,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11624,6 +12467,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11638,6 +12484,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11652,7 +12499,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11677,7 +12524,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11706,6 +12553,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11716,6 +12565,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11730,6 +12582,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11744,10 +12597,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11771,10 +12624,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11801,6 +12654,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11811,6 +12666,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11825,6 +12683,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11839,10 +12698,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11867,10 +12726,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11899,6 +12758,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11909,6 +12770,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12579,6 +13443,7 @@ static void lts_aga_fm1_n0_p2_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -12597,7 +13462,7 @@ static void lts_aga_fm1_n0_p2_ilores_dhires(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -12621,7 +13486,7 @@ static void lts_aga_fm1_n0_p2_ilores_dhires(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -12652,6 +13517,8 @@ static void lts_aga_fm1_n0_p2_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12662,6 +13529,9 @@ static void lts_aga_fm1_n0_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12680,6 +13550,7 @@ static void lts_aga_fm1_n1_p2_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -12704,12 +13575,12 @@ static void lts_aga_fm1_n1_p2_ilores_dhires(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -12739,12 +13610,12 @@ static void lts_aga_fm1_n1_p2_ilores_dhires(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -12775,6 +13646,8 @@ static void lts_aga_fm1_n1_p2_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12785,6 +13658,9 @@ static void lts_aga_fm1_n1_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12803,6 +13679,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -12826,7 +13703,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -12855,7 +13732,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -12886,6 +13763,8 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12896,6 +13775,9 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12914,6 +13796,7 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -12943,12 +13826,12 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -12983,12 +13866,12 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -13019,6 +13902,8 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13029,6 +13914,9 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13095,6 +13983,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13113,7 +14002,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -13137,7 +14026,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -13168,6 +14057,8 @@ static void lts_aga_fm1_n0_p4_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13178,6 +14069,9 @@ static void lts_aga_fm1_n0_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13196,6 +14090,7 @@ static void lts_aga_fm1_n1_p4_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13220,12 +14115,12 @@ static void lts_aga_fm1_n1_p4_ilores_dhires(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -13255,12 +14150,12 @@ static void lts_aga_fm1_n1_p4_ilores_dhires(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -13291,6 +14186,8 @@ static void lts_aga_fm1_n1_p4_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13301,6 +14198,9 @@ static void lts_aga_fm1_n1_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13319,6 +14219,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13342,7 +14243,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -13371,7 +14272,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -13402,6 +14303,8 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13412,6 +14315,9 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13430,6 +14336,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13459,12 +14366,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -13499,12 +14406,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -13535,6 +14442,8 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13545,6 +14454,9 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13611,6 +14523,7 @@ static void lts_aga_fm1_n0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13629,7 +14542,7 @@ static void lts_aga_fm1_n0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -13653,7 +14566,7 @@ static void lts_aga_fm1_n0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -13684,6 +14597,8 @@ static void lts_aga_fm1_n0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13694,6 +14609,9 @@ static void lts_aga_fm1_n0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13712,6 +14630,7 @@ static void lts_aga_fm1_n1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13736,12 +14655,12 @@ static void lts_aga_fm1_n1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -13771,12 +14690,12 @@ static void lts_aga_fm1_n1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -13807,6 +14726,8 @@ static void lts_aga_fm1_n1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13817,6 +14738,9 @@ static void lts_aga_fm1_n1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13835,6 +14759,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13858,7 +14783,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -13887,7 +14812,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -13918,6 +14843,8 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13928,6 +14855,9 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13946,6 +14876,7 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13975,12 +14906,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14015,12 +14946,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14051,6 +14982,8 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14061,6 +14994,9 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14079,6 +15015,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14103,7 +15040,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14133,7 +15070,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14164,6 +15101,8 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14174,6 +15113,9 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14192,6 +15134,7 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14222,12 +15165,12 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14263,12 +15206,12 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14299,6 +15242,8 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14309,6 +15254,9 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14327,6 +15275,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14345,7 +15294,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14369,7 +15318,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14400,6 +15349,8 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14410,6 +15361,9 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14428,6 +15382,7 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14452,12 +15407,12 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14487,12 +15442,12 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14523,6 +15478,8 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14533,6 +15490,9 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14551,6 +15511,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14570,7 +15531,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14595,7 +15556,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14626,6 +15587,8 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14636,6 +15599,9 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14654,6 +15620,7 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14679,12 +15646,12 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14715,12 +15682,12 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -14751,6 +15718,8 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14761,6 +15730,9 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14779,6 +15751,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14797,7 +15770,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -14821,7 +15794,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -14852,6 +15825,8 @@ static void lts_aga_fm1_n0_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14862,6 +15837,9 @@ static void lts_aga_fm1_n0_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14880,6 +15858,7 @@ static void lts_aga_fm1_n1_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14904,12 +15883,12 @@ static void lts_aga_fm1_n1_p8_ilores_dhires(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -14939,12 +15918,12 @@ static void lts_aga_fm1_n1_p8_ilores_dhires(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -14975,6 +15954,8 @@ static void lts_aga_fm1_n1_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14985,6 +15966,9 @@ static void lts_aga_fm1_n1_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15003,6 +15987,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -15026,7 +16011,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15055,7 +16040,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15086,6 +16071,8 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15096,6 +16083,9 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15114,6 +16104,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -15143,12 +16134,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15183,12 +16174,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15219,6 +16210,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15229,6 +16222,9 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15263,6 +16259,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -15281,7 +16278,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15305,7 +16302,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15336,6 +16333,8 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15346,6 +16345,9 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15364,6 +16366,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -15388,12 +16391,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15423,12 +16426,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15459,6 +16462,8 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15469,6 +16474,9 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15503,6 +16511,7 @@ static void lts_aga_fm1_n0_p2_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15522,7 +16531,7 @@ static void lts_aga_fm1_n0_p2_ilores_dhires_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -15555,7 +16564,7 @@ static void lts_aga_fm1_n0_p2_ilores_dhires_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -15606,6 +16615,8 @@ static void lts_aga_fm1_n0_p2_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15616,6 +16627,9 @@ static void lts_aga_fm1_n0_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15634,6 +16648,7 @@ static void lts_aga_fm1_n1_p2_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15659,12 +16674,12 @@ static void lts_aga_fm1_n1_p2_ilores_dhires_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -15703,12 +16718,12 @@ static void lts_aga_fm1_n1_p2_ilores_dhires_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -15759,6 +16774,8 @@ static void lts_aga_fm1_n1_p2_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15769,6 +16786,9 @@ static void lts_aga_fm1_n1_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15787,6 +16807,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15811,7 +16832,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -15849,7 +16870,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -15900,6 +16921,8 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15910,6 +16933,9 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15928,6 +16954,7 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15958,12 +16985,12 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -16007,12 +17034,12 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -16063,6 +17090,8 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16073,6 +17102,9 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16139,6 +17171,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16158,7 +17191,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16191,7 +17224,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16242,6 +17275,8 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16252,6 +17287,9 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16270,6 +17308,7 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16295,12 +17334,12 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16339,12 +17378,12 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16395,6 +17434,8 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16405,6 +17446,9 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16423,6 +17467,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16447,7 +17492,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16485,7 +17530,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16536,6 +17581,8 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16546,6 +17593,9 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16564,6 +17614,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16594,12 +17645,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16643,12 +17694,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16699,6 +17750,8 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16709,6 +17762,9 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16775,6 +17831,7 @@ static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16794,7 +17851,7 @@ static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -16827,7 +17884,7 @@ static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -16878,6 +17935,8 @@ static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16888,6 +17947,9 @@ static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16906,6 +17968,7 @@ static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16931,12 +17994,12 @@ static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -16975,12 +18038,12 @@ static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -17031,6 +18094,8 @@ static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17041,6 +18106,9 @@ static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17059,6 +18127,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17083,7 +18152,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -17121,7 +18190,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -17172,6 +18241,8 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17182,6 +18253,9 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17200,6 +18274,7 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17230,12 +18305,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -17279,12 +18354,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -17335,6 +18410,8 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17345,6 +18422,9 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17363,6 +18443,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17388,7 +18469,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -17427,7 +18508,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -17478,6 +18559,8 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17488,6 +18571,9 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17506,6 +18592,7 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17537,12 +18624,12 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -17587,12 +18674,12 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -17643,6 +18730,8 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17653,6 +18742,9 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17671,6 +18763,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17690,7 +18783,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -17723,7 +18816,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -17774,6 +18867,8 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17784,6 +18879,9 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17802,6 +18900,7 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17827,12 +18926,12 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -17871,12 +18970,12 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -17927,6 +19026,8 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17937,6 +19038,9 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17955,6 +19059,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17975,7 +19080,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -18009,7 +19114,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -18060,6 +19165,8 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18070,6 +19177,9 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18088,6 +19198,7 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18114,12 +19225,12 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -18159,12 +19270,12 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -18215,6 +19326,8 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18225,6 +19338,9 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18243,6 +19359,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18262,7 +19379,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18295,7 +19412,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18346,6 +19463,8 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18356,6 +19475,9 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18374,6 +19496,7 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18399,12 +19522,12 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18443,12 +19566,12 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18499,6 +19622,8 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18509,6 +19634,9 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18527,6 +19655,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18551,7 +19680,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18589,7 +19718,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18640,6 +19769,8 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18650,6 +19781,9 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18668,6 +19802,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18698,12 +19833,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18747,12 +19882,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18803,6 +19938,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18813,6 +19950,9 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18847,6 +19987,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18866,7 +20007,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18899,7 +20040,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18950,6 +20091,8 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18960,6 +20103,9 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18978,6 +20124,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -19003,12 +20150,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -19047,12 +20194,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -19103,6 +20250,8 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19113,6 +20262,9 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19147,6 +20299,7 @@ static void lts_aga_fm1_n0_p2_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19160,7 +20313,7 @@ static void lts_aga_fm1_n0_p2_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -19178,7 +20331,7 @@ static void lts_aga_fm1_n0_p2_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -19208,6 +20361,8 @@ static void lts_aga_fm1_n0_p2_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19218,6 +20373,9 @@ static void lts_aga_fm1_n0_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19236,6 +20394,7 @@ static void lts_aga_fm1_n1_p2_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19249,10 +20408,10 @@ static void lts_aga_fm1_n1_p2_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -19270,10 +20429,10 @@ static void lts_aga_fm1_n1_p2_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -19303,6 +20462,8 @@ static void lts_aga_fm1_n1_p2_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19313,6 +20474,9 @@ static void lts_aga_fm1_n1_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19331,6 +20495,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19349,7 +20514,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -19372,7 +20537,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -19402,6 +20567,8 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19412,6 +20579,9 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19430,6 +20600,7 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19448,10 +20619,10 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -19474,10 +20645,10 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -19507,6 +20678,8 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19517,6 +20690,9 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19583,6 +20759,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19596,7 +20773,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -19614,7 +20791,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -19644,6 +20821,8 @@ static void lts_aga_fm1_n0_p4_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19654,6 +20833,9 @@ static void lts_aga_fm1_n0_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19672,6 +20854,7 @@ static void lts_aga_fm1_n1_p4_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19685,10 +20868,10 @@ static void lts_aga_fm1_n1_p4_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -19706,10 +20889,10 @@ static void lts_aga_fm1_n1_p4_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -19739,6 +20922,8 @@ static void lts_aga_fm1_n1_p4_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19749,6 +20934,9 @@ static void lts_aga_fm1_n1_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19767,6 +20955,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19785,7 +20974,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -19808,7 +20997,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -19838,6 +21027,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19848,6 +21039,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19866,6 +21060,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19884,10 +21079,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -19910,10 +21105,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -19943,6 +21138,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19953,6 +21150,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20019,6 +21219,7 @@ static void lts_aga_fm1_n0_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20032,7 +21233,7 @@ static void lts_aga_fm1_n0_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20050,7 +21251,7 @@ static void lts_aga_fm1_n0_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20080,6 +21281,8 @@ static void lts_aga_fm1_n0_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20090,6 +21293,9 @@ static void lts_aga_fm1_n0_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20108,6 +21314,7 @@ static void lts_aga_fm1_n1_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20121,10 +21328,10 @@ static void lts_aga_fm1_n1_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20142,10 +21349,10 @@ static void lts_aga_fm1_n1_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20175,6 +21382,8 @@ static void lts_aga_fm1_n1_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20185,6 +21394,9 @@ static void lts_aga_fm1_n1_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20203,6 +21415,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20221,7 +21434,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20244,7 +21457,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20274,6 +21487,8 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20284,6 +21499,9 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20302,6 +21520,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20320,10 +21539,10 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20346,10 +21565,10 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20379,6 +21598,8 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20389,6 +21610,9 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20407,6 +21631,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20426,7 +21651,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20450,7 +21675,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20480,6 +21705,8 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20490,6 +21717,9 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20508,6 +21738,7 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20527,10 +21758,10 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20554,10 +21785,10 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20587,6 +21818,8 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20597,6 +21830,9 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20615,6 +21851,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20628,7 +21865,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20646,7 +21883,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20676,6 +21913,8 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20686,6 +21925,9 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20704,6 +21946,7 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20717,10 +21960,10 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20738,10 +21981,10 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20771,6 +22014,8 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20781,6 +22026,9 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20799,6 +22047,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20813,7 +22062,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20832,7 +22081,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20862,6 +22111,8 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20872,6 +22123,9 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20890,6 +22144,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20904,10 +22159,10 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20926,10 +22181,10 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -20959,6 +22214,8 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20969,6 +22226,9 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20987,6 +22247,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21000,7 +22261,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -21018,7 +22279,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -21048,6 +22309,8 @@ static void lts_aga_fm1_n0_p8_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21058,6 +22321,9 @@ static void lts_aga_fm1_n0_p8_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21076,6 +22342,7 @@ static void lts_aga_fm1_n1_p8_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21089,10 +22356,10 @@ static void lts_aga_fm1_n1_p8_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -21110,10 +22377,10 @@ static void lts_aga_fm1_n1_p8_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -21143,6 +22410,8 @@ static void lts_aga_fm1_n1_p8_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21153,6 +22422,9 @@ static void lts_aga_fm1_n1_p8_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21171,6 +22443,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21189,7 +22462,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -21212,7 +22485,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -21242,6 +22515,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21252,6 +22527,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21270,6 +22548,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21288,10 +22567,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -21314,10 +22593,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -21347,6 +22626,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21357,6 +22638,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21391,6 +22675,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21404,7 +22689,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -21422,7 +22707,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -21452,6 +22737,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21462,6 +22749,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21480,6 +22770,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21493,10 +22784,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -21514,10 +22805,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -21547,6 +22838,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21557,6 +22850,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21591,6 +22887,7 @@ static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21605,7 +22902,7 @@ static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -21632,7 +22929,7 @@ static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -21682,6 +22979,8 @@ static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21692,6 +22991,9 @@ static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21710,6 +23012,7 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21724,10 +23027,10 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -21754,10 +23057,10 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -21807,6 +23110,8 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21817,6 +23122,9 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21835,6 +23143,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21854,7 +23163,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -21886,7 +23195,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -21936,6 +23245,8 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21946,6 +23257,9 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21964,6 +23278,7 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21983,10 +23298,10 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -22018,10 +23333,10 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -22071,6 +23386,8 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22081,6 +23398,9 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22147,6 +23467,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22161,7 +23482,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -22188,7 +23509,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -22238,6 +23559,8 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22248,6 +23571,9 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22266,6 +23592,7 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22280,10 +23607,10 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -22310,10 +23637,10 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -22363,6 +23690,8 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22373,6 +23702,9 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22391,6 +23723,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22410,7 +23743,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -22442,7 +23775,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -22492,6 +23825,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22502,6 +23837,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22520,6 +23858,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22539,10 +23878,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -22574,10 +23913,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -22627,6 +23966,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22637,6 +23978,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22703,6 +24047,7 @@ static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22717,7 +24062,7 @@ static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -22744,7 +24089,7 @@ static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -22794,6 +24139,8 @@ static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22804,6 +24151,9 @@ static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22822,6 +24172,7 @@ static void lts_aga_fm1_n1_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22836,10 +24187,10 @@ static void lts_aga_fm1_n1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -22866,10 +24217,10 @@ static void lts_aga_fm1_n1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -22919,6 +24270,8 @@ static void lts_aga_fm1_n1_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22929,6 +24282,9 @@ static void lts_aga_fm1_n1_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22947,6 +24303,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22966,7 +24323,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -22998,7 +24355,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23048,6 +24405,8 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23058,6 +24417,9 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23076,6 +24438,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23095,10 +24458,10 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23130,10 +24493,10 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23183,6 +24546,8 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23193,6 +24558,9 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23211,6 +24579,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23231,7 +24600,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23264,7 +24633,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23314,6 +24683,8 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23324,6 +24695,9 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23342,6 +24716,7 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23362,10 +24737,10 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23398,10 +24773,10 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23451,6 +24826,8 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23461,6 +24838,9 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23479,6 +24859,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23493,7 +24874,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23520,7 +24901,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23570,6 +24951,8 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23580,6 +24963,9 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23598,6 +24984,7 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23612,10 +24999,10 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23642,10 +25029,10 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23695,6 +25082,8 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23705,6 +25094,9 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23723,6 +25115,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23738,7 +25131,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23766,7 +25159,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23816,6 +25209,8 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23826,6 +25221,9 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23844,6 +25242,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23859,10 +25258,10 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23890,10 +25289,10 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                        }
                        loaded_pix = getbpl6_32(); 
@@ -23943,6 +25342,8 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23953,6 +25354,9 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23971,6 +25375,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23985,7 +25390,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -24012,7 +25417,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -24062,6 +25467,8 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24072,6 +25479,9 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24090,6 +25500,7 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24104,10 +25515,10 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -24134,10 +25545,10 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -24187,6 +25598,8 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24197,6 +25610,9 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24215,6 +25631,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24234,7 +25651,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -24266,7 +25683,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -24316,6 +25733,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24326,6 +25745,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24344,6 +25766,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24363,10 +25786,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -24398,10 +25821,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -24451,6 +25874,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24461,6 +25886,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24495,6 +25923,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24509,7 +25938,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -24536,7 +25965,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -24586,6 +26015,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24596,6 +26027,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24614,6 +26048,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24628,10 +26063,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -24658,10 +26093,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -24711,6 +26146,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24721,6 +26158,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24755,6 +26195,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -24768,7 +26209,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -24787,7 +26228,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -24818,6 +26259,8 @@ static void lts_aga_fm1_n0_p2_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24828,6 +26271,9 @@ static void lts_aga_fm1_n0_p2_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24842,6 +26288,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -24855,7 +26302,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -24872,7 +26319,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -24890,7 +26337,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -24907,7 +26354,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -24939,6 +26386,8 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24949,6 +26398,9 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24963,6 +26415,7 @@ static void lts_aga_fm1_n1_p2_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -24976,10 +26429,10 @@ static void lts_aga_fm1_n1_p2_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -24998,10 +26451,10 @@ static void lts_aga_fm1_n1_p2_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25032,6 +26485,8 @@ static void lts_aga_fm1_n1_p2_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25042,6 +26497,9 @@ static void lts_aga_fm1_n1_p2_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25056,6 +26514,7 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25069,10 +26528,10 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25089,10 +26548,10 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25110,10 +26569,10 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25130,10 +26589,10 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25165,6 +26624,8 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25175,6 +26636,9 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25189,6 +26653,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25207,7 +26672,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25231,7 +26696,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25262,6 +26727,8 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25272,6 +26739,9 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25286,6 +26756,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25304,7 +26775,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25326,7 +26797,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25349,7 +26820,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25371,7 +26842,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25403,6 +26874,8 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25413,6 +26886,9 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25427,6 +26903,7 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25445,10 +26922,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25472,10 +26949,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25506,6 +26983,8 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25516,6 +26995,9 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25530,6 +27012,7 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25548,10 +27031,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25573,10 +27056,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25599,10 +27082,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25624,10 +27107,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -25659,6 +27142,8 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25669,6 +27154,9 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25731,6 +27219,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25744,7 +27233,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25763,7 +27252,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25794,6 +27283,8 @@ static void lts_aga_fm1_n0_p4_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25804,6 +27295,9 @@ static void lts_aga_fm1_n0_p4_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25818,6 +27312,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25831,7 +27326,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25848,7 +27343,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25866,7 +27361,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25883,7 +27378,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25915,6 +27410,8 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25925,6 +27422,9 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25939,6 +27439,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25952,10 +27453,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25974,10 +27475,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26008,6 +27509,8 @@ static void lts_aga_fm1_n1_p4_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26018,6 +27521,9 @@ static void lts_aga_fm1_n1_p4_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26032,6 +27538,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -26045,10 +27552,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26065,10 +27572,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26086,10 +27593,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26106,10 +27613,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26141,6 +27648,8 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26151,6 +27660,9 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26165,6 +27677,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -26183,7 +27696,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26207,7 +27720,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26238,6 +27751,8 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26248,6 +27763,9 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26262,6 +27780,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -26280,7 +27799,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26302,7 +27821,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26325,7 +27844,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26347,7 +27866,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26379,6 +27898,8 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26389,6 +27910,9 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26403,6 +27927,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -26421,10 +27946,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26448,10 +27973,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26482,6 +28007,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26492,6 +28019,9 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26506,6 +28036,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -26524,10 +28055,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26549,10 +28080,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26575,10 +28106,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26600,10 +28131,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26635,6 +28166,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26645,6 +28178,9 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26867,6 +28403,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -26881,7 +28418,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -26909,7 +28446,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -26960,6 +28497,8 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26970,6 +28509,9 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26984,6 +28526,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -26998,7 +28541,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27023,7 +28566,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27042,7 +28585,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27067,7 +28610,7 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27113,6 +28656,8 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27123,6 +28668,9 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27137,6 +28685,7 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -27151,10 +28700,10 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27182,10 +28731,10 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27236,6 +28785,8 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27246,6 +28797,9 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27260,6 +28814,7 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -27274,10 +28829,10 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27302,10 +28857,10 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27324,10 +28879,10 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27352,10 +28907,10 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27401,6 +28956,8 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27411,6 +28968,9 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27425,6 +28985,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -27444,7 +29005,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27477,7 +29038,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27528,6 +29089,8 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27538,6 +29101,9 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27552,6 +29118,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -27571,7 +29138,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27601,7 +29168,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27625,7 +29192,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27655,7 +29222,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27701,6 +29268,8 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27711,6 +29280,9 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27725,6 +29297,7 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -27744,10 +29317,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27780,10 +29353,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27834,6 +29407,8 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27844,6 +29419,9 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27858,6 +29436,7 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -27877,10 +29456,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27910,10 +29489,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27937,10 +29516,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -27970,10 +29549,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -28019,6 +29598,8 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28029,6 +29610,9 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28091,6 +29675,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -28105,7 +29690,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28133,7 +29718,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28184,6 +29769,8 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28194,6 +29781,9 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28208,6 +29798,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -28222,7 +29813,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28247,7 +29838,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28266,7 +29857,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28291,7 +29882,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28337,6 +29928,8 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28347,6 +29940,9 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28361,6 +29957,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -28375,10 +29972,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28406,10 +30003,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28460,6 +30057,8 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28470,6 +30069,9 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28484,6 +30086,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -28498,10 +30101,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28526,10 +30129,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28548,10 +30151,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28576,10 +30179,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28625,6 +30228,8 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28635,6 +30240,9 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28649,6 +30257,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -28668,7 +30277,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28701,7 +30310,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28752,6 +30361,8 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28762,6 +30373,9 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28776,6 +30390,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -28795,7 +30410,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28825,7 +30440,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28849,7 +30464,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28879,7 +30494,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -28925,6 +30540,8 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28935,6 +30552,9 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28949,6 +30569,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -28968,10 +30589,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -29004,10 +30625,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -29058,6 +30679,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29068,6 +30691,9 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29082,6 +30708,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -29101,10 +30728,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -29134,10 +30761,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -29161,10 +30788,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -29194,10 +30821,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -29243,6 +30870,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29253,6 +30882,9 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29475,6 +31107,7 @@ static void lts_aga_fm1_n0_p2_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -29493,7 +31126,7 @@ static void lts_aga_fm1_n0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -29517,7 +31150,7 @@ static void lts_aga_fm1_n0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -29541,7 +31174,7 @@ static void lts_aga_fm1_n0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -29565,7 +31198,7 @@ static void lts_aga_fm1_n0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -29614,6 +31247,8 @@ static void lts_aga_fm1_n0_p2_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29624,6 +31259,9 @@ static void lts_aga_fm1_n0_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29642,6 +31280,7 @@ static void lts_aga_fm1_n1_p2_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -29666,12 +31305,12 @@ static void lts_aga_fm1_n1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -29701,12 +31340,12 @@ static void lts_aga_fm1_n1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -29736,12 +31375,12 @@ static void lts_aga_fm1_n1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -29771,12 +31410,12 @@ static void lts_aga_fm1_n1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -29825,6 +31464,8 @@ static void lts_aga_fm1_n1_p2_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29835,6 +31476,9 @@ static void lts_aga_fm1_n1_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29853,6 +31497,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -29876,7 +31521,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -29905,7 +31550,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -29934,7 +31579,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -29963,7 +31608,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -30012,6 +31657,8 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30022,6 +31669,9 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30040,6 +31690,7 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -30069,12 +31720,12 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -30109,12 +31760,12 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -30149,12 +31800,12 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -30189,12 +31840,12 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -30243,6 +31894,8 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30253,6 +31906,9 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30319,6 +31975,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -30337,7 +31994,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30361,7 +32018,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30385,7 +32042,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30409,7 +32066,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30458,6 +32115,8 @@ static void lts_aga_fm1_n0_p4_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30468,6 +32127,9 @@ static void lts_aga_fm1_n0_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30486,6 +32148,7 @@ static void lts_aga_fm1_n1_p4_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -30510,12 +32173,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30545,12 +32208,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30580,12 +32243,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30615,12 +32278,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30669,6 +32332,8 @@ static void lts_aga_fm1_n1_p4_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30679,6 +32344,9 @@ static void lts_aga_fm1_n1_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30697,6 +32365,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -30720,7 +32389,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30749,7 +32418,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30778,7 +32447,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30807,7 +32476,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30856,6 +32525,8 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30866,6 +32537,9 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30884,6 +32558,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -30913,12 +32588,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30953,12 +32628,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -30993,12 +32668,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -31033,12 +32708,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -31087,6 +32762,8 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31097,6 +32774,9 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31163,6 +32843,7 @@ static void lts_aga_fm1_n0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -31181,7 +32862,7 @@ static void lts_aga_fm1_n0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31205,7 +32886,7 @@ static void lts_aga_fm1_n0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31229,7 +32910,7 @@ static void lts_aga_fm1_n0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31253,7 +32934,7 @@ static void lts_aga_fm1_n0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31302,6 +32983,8 @@ static void lts_aga_fm1_n0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31312,6 +32995,9 @@ static void lts_aga_fm1_n0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31330,6 +33016,7 @@ static void lts_aga_fm1_n1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -31354,12 +33041,12 @@ static void lts_aga_fm1_n1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31389,12 +33076,12 @@ static void lts_aga_fm1_n1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31424,12 +33111,12 @@ static void lts_aga_fm1_n1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31459,12 +33146,12 @@ static void lts_aga_fm1_n1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31513,6 +33200,8 @@ static void lts_aga_fm1_n1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31523,6 +33212,9 @@ static void lts_aga_fm1_n1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31541,6 +33233,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -31564,7 +33257,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31593,7 +33286,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31622,7 +33315,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31651,7 +33344,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31700,6 +33393,8 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31710,6 +33405,9 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31728,6 +33426,7 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -31757,12 +33456,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31797,12 +33496,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31837,12 +33536,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31877,12 +33576,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -31931,6 +33630,8 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31941,6 +33642,9 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31959,6 +33663,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -31983,7 +33688,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32013,7 +33718,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32043,7 +33748,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32073,7 +33778,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32122,6 +33827,8 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32132,6 +33839,9 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32150,6 +33860,7 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -32180,12 +33891,12 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32221,12 +33932,12 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32262,12 +33973,12 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32303,12 +34014,12 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32357,6 +34068,8 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32367,6 +34080,9 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32385,6 +34101,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -32403,7 +34120,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32427,7 +34144,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32451,7 +34168,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32475,7 +34192,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32524,6 +34241,8 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32534,6 +34253,9 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32552,6 +34274,7 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -32576,12 +34299,12 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32611,12 +34334,12 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32646,12 +34369,12 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32681,12 +34404,12 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32735,6 +34458,8 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32745,6 +34470,9 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32763,6 +34491,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -32782,7 +34511,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32807,7 +34536,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32832,7 +34561,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32857,7 +34586,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32906,6 +34635,8 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32916,6 +34647,9 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32934,6 +34668,7 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -32959,12 +34694,12 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -32995,12 +34730,12 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -33031,12 +34766,12 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -33067,12 +34802,12 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -33121,6 +34856,8 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33131,6 +34868,9 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33149,6 +34889,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -33167,7 +34908,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33191,7 +34932,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33215,7 +34956,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33239,7 +34980,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33288,6 +35029,8 @@ static void lts_aga_fm1_n0_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33298,6 +35041,9 @@ static void lts_aga_fm1_n0_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33316,6 +35062,7 @@ static void lts_aga_fm1_n1_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -33340,12 +35087,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33375,12 +35122,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33410,12 +35157,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33445,12 +35192,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33499,6 +35246,8 @@ static void lts_aga_fm1_n1_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33509,6 +35258,9 @@ static void lts_aga_fm1_n1_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33527,6 +35279,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -33550,7 +35303,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33579,7 +35332,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33608,7 +35361,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33637,7 +35390,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33686,6 +35439,8 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33696,6 +35451,9 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33714,6 +35472,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -33743,12 +35502,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33783,12 +35542,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33823,12 +35582,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33863,12 +35622,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -33917,6 +35676,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33927,6 +35688,9 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33961,6 +35725,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -33979,7 +35744,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -34003,7 +35768,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -34027,7 +35792,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -34051,7 +35816,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -34100,6 +35865,8 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34110,6 +35877,9 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34128,6 +35898,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -34152,12 +35923,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -34187,12 +35958,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -34222,12 +35993,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -34257,12 +36028,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -34311,6 +36082,8 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34321,6 +36094,9 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34355,6 +36131,7 @@ static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -34374,7 +36151,7 @@ static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -34407,7 +36184,7 @@ static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -34440,7 +36217,7 @@ static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -34473,7 +36250,7 @@ static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -34554,6 +36331,8 @@ static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34564,6 +36343,9 @@ static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34582,6 +36364,7 @@ static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -34607,12 +36390,12 @@ static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -34651,12 +36434,12 @@ static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -34695,12 +36478,12 @@ static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -34739,12 +36522,12 @@ static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -34825,6 +36608,8 @@ static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34835,6 +36620,9 @@ static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34853,6 +36641,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -34877,7 +36666,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -34915,7 +36704,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -34953,7 +36742,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -34991,7 +36780,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -35072,6 +36861,8 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35082,6 +36873,9 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35100,6 +36894,7 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -35130,12 +36925,12 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -35179,12 +36974,12 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -35228,12 +37023,12 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -35277,12 +37072,12 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -35363,6 +37158,8 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35373,6 +37170,9 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35439,6 +37239,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -35458,7 +37259,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -35491,7 +37292,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -35524,7 +37325,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -35557,7 +37358,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -35638,6 +37439,8 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35648,6 +37451,9 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35666,6 +37472,7 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -35691,12 +37498,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -35735,12 +37542,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -35779,12 +37586,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -35823,12 +37630,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -35909,6 +37716,8 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35919,6 +37728,9 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35937,6 +37749,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -35961,7 +37774,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -35999,7 +37812,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -36037,7 +37850,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -36075,7 +37888,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -36156,6 +37969,8 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -36166,6 +37981,9 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -36184,6 +38002,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -36214,12 +38033,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -36263,12 +38082,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -36312,12 +38131,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -36361,12 +38180,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -36447,6 +38266,8 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -36457,6 +38278,9 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -36523,6 +38347,7 @@ static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -36542,7 +38367,7 @@ static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -36575,7 +38400,7 @@ static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -36608,7 +38433,7 @@ static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -36641,7 +38466,7 @@ static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -36722,6 +38547,8 @@ static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -36732,6 +38559,9 @@ static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -36750,6 +38580,7 @@ static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -36775,12 +38606,12 @@ static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -36819,12 +38650,12 @@ static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -36863,12 +38694,12 @@ static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -36907,12 +38738,12 @@ static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -36993,6 +38824,8 @@ static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -37003,6 +38836,9 @@ static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -37021,6 +38857,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -37045,7 +38882,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37083,7 +38920,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37121,7 +38958,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37159,7 +38996,7 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37240,6 +39077,8 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -37250,6 +39089,9 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -37268,6 +39110,7 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -37298,12 +39141,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37347,12 +39190,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37396,12 +39239,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37445,12 +39288,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37531,6 +39374,8 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -37541,6 +39386,9 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -37559,6 +39407,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -37584,7 +39433,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37623,7 +39472,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37662,7 +39511,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37701,7 +39550,7 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37782,6 +39631,8 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -37792,6 +39643,9 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -37810,6 +39664,7 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -37841,12 +39696,12 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37891,12 +39746,12 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37941,12 +39796,12 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -37991,12 +39846,12 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38077,6 +39932,8 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -38087,6 +39944,9 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -38105,6 +39965,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -38124,7 +39985,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38157,7 +40018,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38190,7 +40051,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38223,7 +40084,7 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38304,6 +40165,8 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -38314,6 +40177,9 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -38332,6 +40198,7 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -38357,12 +40224,12 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38401,12 +40268,12 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38445,12 +40312,12 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38489,12 +40356,12 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38575,6 +40442,8 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -38585,6 +40454,9 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -38603,6 +40475,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -38623,7 +40496,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38657,7 +40530,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38691,7 +40564,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38725,7 +40598,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38806,6 +40679,8 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -38816,6 +40691,9 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -38834,6 +40712,7 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -38860,12 +40739,12 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38905,12 +40784,12 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38950,12 +40829,12 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -38995,12 +40874,12 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -39081,6 +40960,8 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -39091,6 +40972,9 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -39109,6 +40993,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -39128,7 +41013,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39161,7 +41046,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39194,7 +41079,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39227,7 +41112,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39308,6 +41193,8 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -39318,6 +41205,9 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -39336,6 +41226,7 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -39361,12 +41252,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39405,12 +41296,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39449,12 +41340,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39493,12 +41384,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39579,6 +41470,8 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -39589,6 +41482,9 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -39607,6 +41503,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -39631,7 +41528,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39669,7 +41566,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39707,7 +41604,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39745,7 +41642,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39826,6 +41723,8 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -39836,6 +41735,9 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -39854,6 +41756,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -39884,12 +41787,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39933,12 +41836,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -39982,12 +41885,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -40031,12 +41934,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -40117,6 +42020,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -40127,6 +42032,9 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -40161,6 +42069,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -40180,7 +42089,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -40213,7 +42122,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -40246,7 +42155,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -40279,7 +42188,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -40360,6 +42269,8 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -40370,6 +42281,9 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -40388,6 +42302,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -40413,12 +42328,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -40457,12 +42372,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -40501,12 +42416,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -40545,12 +42460,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -40631,6 +42546,8 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -40641,6 +42558,9 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -40675,6 +42595,7 @@ static void lts_aga_fm1_n0_p2_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -40693,7 +42614,7 @@ static void lts_aga_fm1_n0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -40717,7 +42638,7 @@ static void lts_aga_fm1_n0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -40741,7 +42662,7 @@ static void lts_aga_fm1_n0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -40765,7 +42686,7 @@ static void lts_aga_fm1_n0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -40814,6 +42735,8 @@ static void lts_aga_fm1_n0_p2_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -40824,6 +42747,9 @@ static void lts_aga_fm1_n0_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -40842,6 +42768,7 @@ static void lts_aga_fm1_n1_p2_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -40866,12 +42793,12 @@ static void lts_aga_fm1_n1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -40901,12 +42828,12 @@ static void lts_aga_fm1_n1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -40936,12 +42863,12 @@ static void lts_aga_fm1_n1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -40971,12 +42898,12 @@ static void lts_aga_fm1_n1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -41025,6 +42952,8 @@ static void lts_aga_fm1_n1_p2_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -41035,6 +42964,9 @@ static void lts_aga_fm1_n1_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -41053,6 +42985,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -41076,7 +43009,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -41105,7 +43038,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -41134,7 +43067,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -41163,7 +43096,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -41212,6 +43145,8 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -41222,6 +43157,9 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -41240,6 +43178,7 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -41269,12 +43208,12 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -41309,12 +43248,12 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -41349,12 +43288,12 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -41389,12 +43328,12 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -41443,6 +43382,8 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -41453,6 +43394,9 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -41519,6 +43463,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -41537,7 +43482,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -41561,7 +43506,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -41585,7 +43530,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -41609,7 +43554,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -41658,6 +43603,8 @@ static void lts_aga_fm1_n0_p4_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -41668,6 +43615,9 @@ static void lts_aga_fm1_n0_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -41686,6 +43636,7 @@ static void lts_aga_fm1_n1_p4_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -41710,12 +43661,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -41745,12 +43696,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -41780,12 +43731,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -41815,12 +43766,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -41869,6 +43820,8 @@ static void lts_aga_fm1_n1_p4_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -41879,6 +43832,9 @@ static void lts_aga_fm1_n1_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -41897,6 +43853,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -41920,7 +43877,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -41949,7 +43906,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -41978,7 +43935,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -42007,7 +43964,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -42056,6 +44013,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -42066,6 +44025,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -42084,6 +44046,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -42113,12 +44076,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -42153,12 +44116,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -42193,12 +44156,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -42233,12 +44196,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -42287,6 +44250,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -42297,6 +44262,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -42363,6 +44331,7 @@ static void lts_aga_fm1_n0_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -42381,7 +44350,7 @@ static void lts_aga_fm1_n0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -42405,7 +44374,7 @@ static void lts_aga_fm1_n0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -42429,7 +44398,7 @@ static void lts_aga_fm1_n0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -42453,7 +44422,7 @@ static void lts_aga_fm1_n0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -42502,6 +44471,8 @@ static void lts_aga_fm1_n0_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -42512,6 +44483,9 @@ static void lts_aga_fm1_n0_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -42530,6 +44504,7 @@ static void lts_aga_fm1_n1_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -42554,12 +44529,12 @@ static void lts_aga_fm1_n1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -42589,12 +44564,12 @@ static void lts_aga_fm1_n1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -42624,12 +44599,12 @@ static void lts_aga_fm1_n1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -42659,12 +44634,12 @@ static void lts_aga_fm1_n1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -42713,6 +44688,8 @@ static void lts_aga_fm1_n1_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -42723,6 +44700,9 @@ static void lts_aga_fm1_n1_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -42741,6 +44721,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -42764,7 +44745,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -42793,7 +44774,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -42822,7 +44803,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -42851,7 +44832,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -42900,6 +44881,8 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -42910,6 +44893,9 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -42928,6 +44914,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -42957,12 +44944,12 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -42997,12 +44984,12 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43037,12 +45024,12 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43077,12 +45064,12 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43131,6 +45118,8 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -43141,6 +45130,9 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -43159,6 +45151,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -43183,7 +45176,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43213,7 +45206,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43243,7 +45236,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43273,7 +45266,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43322,6 +45315,8 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -43332,6 +45327,9 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -43350,6 +45348,7 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -43380,12 +45379,12 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43421,12 +45420,12 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43462,12 +45461,12 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43503,12 +45502,12 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43557,6 +45556,8 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -43567,6 +45568,9 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -43585,6 +45589,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -43603,7 +45608,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43627,7 +45632,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43651,7 +45656,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43675,7 +45680,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43724,6 +45729,8 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -43734,6 +45741,9 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -43752,6 +45762,7 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -43776,12 +45787,12 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43811,12 +45822,12 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43846,12 +45857,12 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43881,12 +45892,12 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -43935,6 +45946,8 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -43945,6 +45958,9 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -43963,6 +45979,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -43982,7 +45999,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -44007,7 +46024,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -44032,7 +46049,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -44057,7 +46074,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -44106,6 +46123,8 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -44116,6 +46135,9 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -44134,6 +46156,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -44159,12 +46182,12 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -44195,12 +46218,12 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -44231,12 +46254,12 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -44267,12 +46290,12 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -44321,6 +46344,8 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -44331,6 +46356,9 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -44349,6 +46377,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -44367,7 +46396,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -44391,7 +46420,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -44415,7 +46444,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -44439,7 +46468,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -44488,6 +46517,8 @@ static void lts_aga_fm1_n0_p8_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -44498,6 +46529,9 @@ static void lts_aga_fm1_n0_p8_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -44516,6 +46550,7 @@ static void lts_aga_fm1_n1_p8_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -44540,12 +46575,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -44575,12 +46610,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -44610,12 +46645,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -44645,12 +46680,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -44699,6 +46734,8 @@ static void lts_aga_fm1_n1_p8_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -44709,6 +46746,9 @@ static void lts_aga_fm1_n1_p8_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -44727,6 +46767,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -44750,7 +46791,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -44779,7 +46820,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -44808,7 +46849,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -44837,7 +46878,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -44886,6 +46927,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -44896,6 +46939,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -44914,6 +46960,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -44943,12 +46990,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -44983,12 +47030,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -45023,12 +47070,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -45063,12 +47110,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -45117,6 +47164,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -45127,6 +47176,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -45161,6 +47213,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -45179,7 +47232,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -45203,7 +47256,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -45227,7 +47280,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -45251,7 +47304,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -45300,6 +47353,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -45310,6 +47365,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -45328,6 +47386,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -45352,12 +47411,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -45387,12 +47446,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -45422,12 +47481,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -45457,12 +47516,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -45511,6 +47570,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -45521,6 +47582,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -45555,6 +47619,7 @@ static void lts_aga_fm1_n0_p2_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -45574,7 +47639,7 @@ static void lts_aga_fm1_n0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -45607,7 +47672,7 @@ static void lts_aga_fm1_n0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -45640,7 +47705,7 @@ static void lts_aga_fm1_n0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -45673,7 +47738,7 @@ static void lts_aga_fm1_n0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -45754,6 +47819,8 @@ static void lts_aga_fm1_n0_p2_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -45764,6 +47831,9 @@ static void lts_aga_fm1_n0_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -45782,6 +47852,7 @@ static void lts_aga_fm1_n1_p2_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -45807,12 +47878,12 @@ static void lts_aga_fm1_n1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -45851,12 +47922,12 @@ static void lts_aga_fm1_n1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -45895,12 +47966,12 @@ static void lts_aga_fm1_n1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -45939,12 +48010,12 @@ static void lts_aga_fm1_n1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -46025,6 +48096,8 @@ static void lts_aga_fm1_n1_p2_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -46035,6 +48108,9 @@ static void lts_aga_fm1_n1_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -46053,6 +48129,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -46077,7 +48154,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -46115,7 +48192,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -46153,7 +48230,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -46191,7 +48268,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void)
                                shiftbpl2();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -46272,6 +48349,8 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -46282,6 +48361,9 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -46300,6 +48382,7 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -46330,12 +48413,12 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -46379,12 +48462,12 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -46428,12 +48511,12 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -46477,12 +48560,12 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void)
                                shiftbpl2o();
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_32(); 
@@ -46563,6 +48646,8 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -46573,6 +48658,9 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -46639,6 +48727,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -46658,7 +48747,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -46691,7 +48780,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -46724,7 +48813,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -46757,7 +48846,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -46838,6 +48927,8 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -46848,6 +48939,9 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -46866,6 +48960,7 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -46891,12 +48986,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -46935,12 +49030,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -46979,12 +49074,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -47023,12 +49118,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -47109,6 +49204,8 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -47119,6 +49216,9 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -47137,6 +49237,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -47161,7 +49262,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -47199,7 +49300,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -47237,7 +49338,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -47275,7 +49376,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -47356,6 +49457,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -47366,6 +49469,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -47384,6 +49490,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -47414,12 +49521,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -47463,12 +49570,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -47512,12 +49619,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -47561,12 +49668,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -47647,6 +49754,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -47657,6 +49766,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -47723,6 +49835,7 @@ static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -47742,7 +49855,7 @@ static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -47775,7 +49888,7 @@ static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -47808,7 +49921,7 @@ static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -47841,7 +49954,7 @@ static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -47922,6 +50035,8 @@ static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -47932,6 +50047,9 @@ static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -47950,6 +50068,7 @@ static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -47975,12 +50094,12 @@ static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48019,12 +50138,12 @@ static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48063,12 +50182,12 @@ static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48107,12 +50226,12 @@ static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48193,6 +50312,8 @@ static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -48203,6 +50324,9 @@ static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -48221,6 +50345,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -48245,7 +50370,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48283,7 +50408,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48321,7 +50446,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48359,7 +50484,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48440,6 +50565,8 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -48450,6 +50577,9 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -48468,6 +50598,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -48498,12 +50629,12 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48547,12 +50678,12 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48596,12 +50727,12 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48645,12 +50776,12 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48731,6 +50862,8 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -48741,6 +50874,9 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -48759,6 +50895,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -48784,7 +50921,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48823,7 +50960,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48862,7 +50999,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48901,7 +51038,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -48982,6 +51119,8 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -48992,6 +51131,9 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -49010,6 +51152,7 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -49041,12 +51184,12 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49091,12 +51234,12 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49141,12 +51284,12 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49191,12 +51334,12 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49277,6 +51420,8 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -49287,6 +51432,9 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -49305,6 +51453,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -49324,7 +51473,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49357,7 +51506,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49390,7 +51539,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49423,7 +51572,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49504,6 +51653,8 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -49514,6 +51665,9 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -49532,6 +51686,7 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -49557,12 +51712,12 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49601,12 +51756,12 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49645,12 +51800,12 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49689,12 +51844,12 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49775,6 +51930,8 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -49785,6 +51942,9 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -49803,6 +51963,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -49823,7 +51984,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49857,7 +52018,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49891,7 +52052,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -49925,7 +52086,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -50006,6 +52167,8 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -50016,6 +52179,9 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -50034,6 +52200,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -50060,12 +52227,12 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -50105,12 +52272,12 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -50150,12 +52317,12 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -50195,12 +52362,12 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o();
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_32(); 
@@ -50281,6 +52448,8 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -50291,6 +52460,9 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -50309,6 +52481,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -50328,7 +52501,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -50361,7 +52534,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -50394,7 +52567,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -50427,7 +52600,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -50508,6 +52681,8 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -50518,6 +52693,9 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -50536,6 +52714,7 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -50561,12 +52740,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -50605,12 +52784,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -50649,12 +52828,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -50693,12 +52872,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -50779,6 +52958,8 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -50789,6 +52970,9 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -50807,6 +52991,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -50831,7 +53016,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -50869,7 +53054,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -50907,7 +53092,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -50945,7 +53130,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -51026,6 +53211,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -51036,6 +53223,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -51054,6 +53244,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -51084,12 +53275,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -51133,12 +53324,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -51182,12 +53373,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -51231,12 +53422,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -51317,6 +53508,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -51327,6 +53520,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -51361,6 +53557,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -51380,7 +53577,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -51413,7 +53610,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -51446,7 +53643,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -51479,7 +53676,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -51560,6 +53757,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -51570,6 +53769,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -51588,6 +53790,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -51613,12 +53816,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -51657,12 +53860,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -51701,12 +53904,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -51745,12 +53948,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -51831,6 +54034,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -51841,6 +54046,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -51875,6 +54083,7 @@ static void lts_aga_fm1_n0_p2_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -51888,7 +54097,7 @@ static void lts_aga_fm1_n0_p2_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -51906,7 +54115,7 @@ static void lts_aga_fm1_n0_p2_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -51924,7 +54133,7 @@ static void lts_aga_fm1_n0_p2_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -51942,7 +54151,7 @@ static void lts_aga_fm1_n0_p2_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -51990,6 +54199,8 @@ static void lts_aga_fm1_n0_p2_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -52000,6 +54211,9 @@ static void lts_aga_fm1_n0_p2_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -52018,6 +54232,7 @@ static void lts_aga_fm1_n1_p2_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -52031,10 +54246,10 @@ static void lts_aga_fm1_n1_p2_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -52052,10 +54267,10 @@ static void lts_aga_fm1_n1_p2_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -52073,10 +54288,10 @@ static void lts_aga_fm1_n1_p2_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -52094,10 +54309,10 @@ static void lts_aga_fm1_n1_p2_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -52145,6 +54360,8 @@ static void lts_aga_fm1_n1_p2_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -52155,6 +54372,9 @@ static void lts_aga_fm1_n1_p2_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -52173,6 +54393,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -52191,7 +54412,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -52214,7 +54435,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -52237,7 +54458,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -52260,7 +54481,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -52308,6 +54529,8 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -52318,6 +54541,9 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -52336,6 +54562,7 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -52354,10 +54581,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -52380,10 +54607,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -52406,10 +54633,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -52432,10 +54659,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -52483,6 +54710,8 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -52493,6 +54722,9 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -52559,6 +54791,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -52572,7 +54805,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -52590,7 +54823,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -52608,7 +54841,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -52626,7 +54859,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -52674,6 +54907,8 @@ static void lts_aga_fm1_n0_p4_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -52684,6 +54919,9 @@ static void lts_aga_fm1_n0_p4_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -52702,6 +54940,7 @@ static void lts_aga_fm1_n1_p4_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -52715,10 +54954,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -52736,10 +54975,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -52757,10 +54996,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -52778,10 +55017,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -52829,6 +55068,8 @@ static void lts_aga_fm1_n1_p4_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -52839,6 +55080,9 @@ static void lts_aga_fm1_n1_p4_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -52857,6 +55101,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -52875,7 +55120,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -52898,7 +55143,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -52921,7 +55166,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -52944,7 +55189,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -52992,6 +55237,8 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -53002,6 +55249,9 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -53020,6 +55270,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -53038,10 +55289,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -53064,10 +55315,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -53090,10 +55341,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -53116,10 +55367,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -53167,6 +55418,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -53177,6 +55430,9 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -53403,6 +55659,7 @@ static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -53417,7 +55674,7 @@ static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -53444,7 +55701,7 @@ static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -53471,7 +55728,7 @@ static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -53498,7 +55755,7 @@ static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -53578,6 +55835,8 @@ static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -53588,6 +55847,9 @@ static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -53606,6 +55868,7 @@ static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -53620,10 +55883,10 @@ static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -53650,10 +55913,10 @@ static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -53680,10 +55943,10 @@ static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -53710,10 +55973,10 @@ static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -53793,6 +56056,8 @@ static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -53803,6 +56068,9 @@ static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -53821,6 +56089,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -53840,7 +56109,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -53872,7 +56141,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -53904,7 +56173,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -53936,7 +56205,7 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -54016,6 +56285,8 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -54026,6 +56297,9 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -54044,6 +56318,7 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -54063,10 +56338,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -54098,10 +56373,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -54133,10 +56408,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -54168,10 +56443,10 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl2o();
                        }
                        loaded_pix = getbpl2_32(); 
@@ -54251,6 +56526,8 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -54261,6 +56538,9 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -54327,6 +56607,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -54341,7 +56622,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -54368,7 +56649,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -54395,7 +56676,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -54422,7 +56703,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -54502,6 +56783,8 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -54512,6 +56795,9 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -54530,6 +56816,7 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -54544,10 +56831,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -54574,10 +56861,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -54604,10 +56891,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -54634,10 +56921,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -54717,6 +57004,8 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -54727,6 +57016,9 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -54745,6 +57037,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -54764,7 +57057,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -54796,7 +57089,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -54828,7 +57121,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -54860,7 +57153,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -54940,6 +57233,8 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -54950,6 +57245,9 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -54968,6 +57266,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -54987,10 +57286,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -55022,10 +57321,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -55057,10 +57356,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -55092,10 +57391,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -55175,6 +57474,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -55185,6 +57486,9 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
index 4af650f85b9fe9a379f2b00cf4be97e984dcce27..d65aa92195a01ac1c963553d81f8ce6b6e2a4b66 100644 (file)
@@ -15,6 +15,7 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -31,7 +32,7 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -54,6 +55,8 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -64,6 +67,9 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -82,6 +88,7 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -98,10 +105,10 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -124,6 +131,8 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -134,6 +143,9 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -152,6 +164,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -173,7 +186,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -196,6 +209,8 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -206,6 +221,9 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -224,6 +242,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -245,10 +264,10 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -271,6 +290,8 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -281,6 +302,9 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -347,6 +371,7 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -363,7 +388,7 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -386,6 +411,8 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -396,6 +423,9 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -414,6 +444,7 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -430,10 +461,10 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -456,6 +487,8 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -466,6 +499,9 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -484,6 +520,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -505,7 +542,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -528,6 +565,8 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -538,6 +577,9 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -556,6 +598,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -577,10 +620,10 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -603,6 +646,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -613,6 +658,9 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -647,6 +695,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -663,7 +712,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -686,6 +735,8 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -696,6 +747,9 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -714,6 +768,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -730,10 +785,10 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -756,6 +811,8 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -766,6 +823,9 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -800,6 +860,7 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -817,7 +878,7 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -856,6 +917,8 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -866,6 +929,9 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -884,6 +950,7 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -901,10 +968,10 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -943,6 +1010,8 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -953,6 +1022,9 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -971,6 +1043,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -993,7 +1066,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -1032,6 +1105,8 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1042,6 +1117,9 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1060,6 +1138,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1082,10 +1161,10 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -1124,6 +1203,8 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1134,6 +1215,9 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1200,6 +1284,7 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1217,7 +1302,7 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -1256,6 +1341,8 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1266,6 +1353,9 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1284,6 +1374,7 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1301,10 +1392,10 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -1343,6 +1434,8 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1353,6 +1446,9 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1371,6 +1467,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1393,7 +1490,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -1432,6 +1529,8 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1442,6 +1541,9 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1460,6 +1562,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1482,10 +1585,10 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -1524,6 +1627,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1534,6 +1639,9 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1568,6 +1676,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1585,7 +1694,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -1624,6 +1733,8 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1634,6 +1745,9 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1652,6 +1766,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1669,10 +1784,10 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -1711,6 +1826,8 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1721,6 +1838,9 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1755,6 +1875,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -1771,7 +1892,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -1795,6 +1916,8 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1805,6 +1928,9 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1819,6 +1945,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -1835,7 +1962,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -1855,7 +1982,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -1880,6 +2007,8 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1890,6 +2019,9 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1904,6 +2036,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -1920,10 +2053,10 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -1947,6 +2080,8 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1957,6 +2092,9 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1971,6 +2109,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -1987,10 +2126,10 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -2010,10 +2149,10 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -2038,6 +2177,8 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2048,6 +2189,9 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2062,6 +2206,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2083,7 +2228,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -2107,6 +2252,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2117,6 +2264,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2131,6 +2281,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2152,7 +2303,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -2177,7 +2328,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -2202,6 +2353,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2212,6 +2365,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2226,6 +2382,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2247,10 +2404,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -2274,6 +2431,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2284,6 +2443,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2298,6 +2460,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2319,10 +2482,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -2347,10 +2510,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -2375,6 +2538,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2385,6 +2550,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2447,6 +2615,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2463,7 +2632,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -2487,6 +2656,8 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2497,6 +2668,9 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2511,6 +2685,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2527,7 +2702,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -2547,7 +2722,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -2572,6 +2747,8 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2582,6 +2759,9 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2596,6 +2776,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2612,10 +2793,10 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -2639,6 +2820,8 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2649,6 +2832,9 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2663,6 +2849,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2679,10 +2866,10 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -2702,10 +2889,10 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -2730,6 +2917,8 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2740,6 +2929,9 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2754,6 +2946,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2775,7 +2968,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -2799,6 +2992,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2809,6 +3004,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2823,6 +3021,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2844,7 +3043,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -2869,7 +3068,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -2894,6 +3093,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2904,6 +3105,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2918,6 +3122,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2939,10 +3144,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -2966,6 +3171,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2976,6 +3183,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2990,6 +3200,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -3011,10 +3222,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3039,10 +3250,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3067,6 +3278,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3077,6 +3290,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3107,6 +3323,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -3123,7 +3340,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3140,7 +3357,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3163,6 +3380,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3173,6 +3392,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3187,6 +3409,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -3203,7 +3426,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3223,7 +3446,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3248,6 +3471,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3258,6 +3483,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3272,6 +3500,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -3288,10 +3517,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3308,10 +3537,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3334,6 +3563,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3344,6 +3575,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3358,6 +3592,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -3374,10 +3609,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3397,10 +3632,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -3425,6 +3660,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3435,6 +3672,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3465,6 +3705,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3482,7 +3723,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -3522,6 +3763,8 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3532,6 +3775,9 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3546,6 +3792,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3563,7 +3810,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -3591,7 +3838,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -3625,6 +3872,8 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3635,6 +3884,9 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3649,6 +3901,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3666,10 +3919,10 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -3709,6 +3962,8 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3719,6 +3974,9 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3733,6 +3991,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3750,10 +4009,10 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -3781,10 +4040,10 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -3818,6 +4077,8 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3828,6 +4089,9 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3842,6 +4106,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3864,7 +4129,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -3904,6 +4169,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3914,6 +4181,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3928,6 +4198,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3950,7 +4221,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -3983,7 +4254,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4017,6 +4288,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4027,6 +4300,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4041,6 +4317,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4063,10 +4340,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4106,6 +4383,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4116,6 +4395,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4130,6 +4412,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4152,10 +4435,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4188,10 +4471,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -4225,6 +4508,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4235,6 +4520,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4297,6 +4585,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4314,7 +4603,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -4354,6 +4643,8 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4364,6 +4655,9 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4378,6 +4672,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4395,7 +4690,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -4423,7 +4718,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -4457,6 +4752,8 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4467,6 +4764,9 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4481,6 +4781,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4498,10 +4799,10 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -4541,6 +4842,8 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4551,6 +4854,9 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4565,6 +4871,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4582,10 +4889,10 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -4613,10 +4920,10 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -4650,6 +4957,8 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4660,6 +4969,9 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4674,6 +4986,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4696,7 +5009,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -4736,6 +5049,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4746,6 +5061,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4760,6 +5078,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4782,7 +5101,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -4815,7 +5134,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -4849,6 +5168,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4859,6 +5180,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4873,6 +5197,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4895,10 +5220,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -4938,6 +5263,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4948,6 +5275,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4962,6 +5292,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4984,10 +5315,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -5020,10 +5351,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -5057,6 +5388,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5067,6 +5400,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5097,6 +5433,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5114,7 +5451,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -5139,7 +5476,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -5170,6 +5507,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5180,6 +5519,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5194,6 +5536,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5211,7 +5554,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -5239,7 +5582,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -5273,6 +5616,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5283,6 +5628,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5297,6 +5645,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5314,10 +5663,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -5342,10 +5691,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -5376,6 +5725,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5386,6 +5737,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5400,6 +5754,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5417,10 +5772,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -5448,10 +5803,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -5485,6 +5840,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5495,6 +5852,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5845,6 +6205,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -5866,7 +6227,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -5893,7 +6254,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -5928,6 +6289,8 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5938,6 +6301,9 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5956,6 +6322,7 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -5983,12 +6350,12 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -6021,12 +6388,12 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -6061,6 +6428,8 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6071,6 +6440,9 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6089,6 +6461,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6115,7 +6488,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -6147,7 +6520,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -6182,6 +6555,8 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6192,6 +6567,9 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6210,6 +6588,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6242,12 +6621,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -6285,12 +6664,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -6325,6 +6704,8 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6335,6 +6716,9 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6401,6 +6785,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6422,7 +6807,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -6449,7 +6834,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -6484,6 +6869,8 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6494,6 +6881,9 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6512,6 +6902,7 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6539,12 +6930,12 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -6577,12 +6968,12 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -6617,6 +7008,8 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6627,6 +7020,9 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6645,6 +7041,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6671,7 +7068,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -6703,7 +7100,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -6738,6 +7135,8 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6748,6 +7147,9 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6766,6 +7168,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6798,12 +7201,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -6841,12 +7244,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -6881,6 +7284,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6891,6 +7296,9 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6925,6 +7333,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6946,7 +7355,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -6973,7 +7382,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -7008,6 +7417,8 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7018,6 +7429,9 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7036,6 +7450,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -7063,12 +7478,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -7101,12 +7516,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -7141,6 +7556,8 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7151,6 +7568,9 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7185,6 +7605,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7207,7 +7628,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -7243,7 +7664,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -7302,6 +7723,8 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7312,6 +7735,9 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7330,6 +7756,7 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7358,12 +7785,12 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -7405,12 +7832,12 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -7469,6 +7896,8 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7479,6 +7908,9 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7497,6 +7929,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7524,7 +7957,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -7565,7 +7998,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -7624,6 +8057,8 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7634,6 +8069,9 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7652,6 +8090,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7685,12 +8124,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -7737,12 +8176,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -7801,6 +8240,8 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7811,6 +8252,9 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7877,6 +8321,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7899,7 +8344,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -7935,7 +8380,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -7994,6 +8439,8 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8004,6 +8451,9 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8022,6 +8472,7 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8050,12 +8501,12 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -8097,12 +8548,12 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -8161,6 +8612,8 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8171,6 +8624,9 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8189,6 +8645,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8216,7 +8673,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -8257,7 +8714,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -8316,6 +8773,8 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8326,6 +8785,9 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8344,6 +8806,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8377,12 +8840,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -8429,12 +8892,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -8493,6 +8956,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8503,6 +8968,9 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8537,6 +9005,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8559,7 +9028,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -8595,7 +9064,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -8654,6 +9123,8 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8664,6 +9135,9 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8682,6 +9156,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8710,12 +9185,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -8757,12 +9232,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -8821,6 +9296,8 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8831,6 +9308,9 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8865,6 +9345,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -8881,7 +9362,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8902,7 +9383,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -8936,6 +9417,8 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8946,6 +9429,9 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8964,6 +9450,7 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -8980,10 +9467,10 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -9004,10 +9491,10 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -9041,6 +9528,8 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9051,6 +9540,9 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9069,6 +9561,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9090,7 +9583,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -9116,7 +9609,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -9150,6 +9643,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9160,6 +9655,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9178,6 +9676,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9199,10 +9698,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -9228,10 +9727,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -9265,6 +9764,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9275,6 +9776,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9341,6 +9845,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9357,7 +9862,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -9378,7 +9883,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -9412,6 +9917,8 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9422,6 +9929,9 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9440,6 +9950,7 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9456,10 +9967,10 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -9480,10 +9991,10 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -9517,6 +10028,8 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9527,6 +10040,9 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9545,6 +10061,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9566,7 +10083,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -9592,7 +10109,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -9626,6 +10143,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9636,6 +10155,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9654,6 +10176,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9675,10 +10198,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -9704,10 +10227,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -9741,6 +10264,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9751,6 +10276,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9785,6 +10313,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9801,7 +10330,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -9822,7 +10351,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -9856,6 +10385,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9866,6 +10397,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9884,6 +10418,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9900,10 +10435,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -9924,10 +10459,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -9961,6 +10496,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9971,6 +10508,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10005,6 +10545,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10022,7 +10563,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -10052,7 +10593,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -10110,6 +10651,8 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10120,6 +10663,9 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10138,6 +10684,7 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10155,10 +10702,10 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -10188,10 +10735,10 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -10249,6 +10796,8 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10259,6 +10808,9 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10277,6 +10829,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10299,7 +10852,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -10334,7 +10887,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -10392,6 +10945,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10402,6 +10957,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10420,6 +10978,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10442,10 +11001,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -10480,10 +11039,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -10541,6 +11100,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10551,6 +11112,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10617,6 +11181,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10634,7 +11199,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -10664,7 +11229,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -10722,6 +11287,8 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10732,6 +11299,9 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10750,6 +11320,7 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10767,10 +11338,10 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -10800,10 +11371,10 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -10861,6 +11432,8 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10871,6 +11444,9 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10889,6 +11465,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10911,7 +11488,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -10946,7 +11523,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11004,6 +11581,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11014,6 +11593,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11032,6 +11614,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11054,10 +11637,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11092,10 +11675,10 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11153,6 +11736,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11163,6 +11748,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11197,6 +11785,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11214,7 +11803,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11244,7 +11833,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11302,6 +11891,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11312,6 +11903,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11330,6 +11924,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11347,10 +11942,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11380,10 +11975,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                        }
                        loaded_pix = getbpl8_32(); 
@@ -11441,6 +12036,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11451,6 +12048,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11485,6 +12085,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -11501,7 +12102,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -11523,7 +12124,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -11558,6 +12159,8 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11568,6 +12171,9 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11582,6 +12188,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -11598,7 +12205,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -11618,7 +12225,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -11639,7 +12246,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -11659,7 +12266,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -11697,6 +12304,8 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11707,6 +12316,9 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11721,6 +12333,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -11737,10 +12350,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -11762,10 +12375,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -11800,6 +12413,8 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11810,6 +12425,9 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11824,6 +12442,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -11840,10 +12459,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -11863,10 +12482,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -11887,10 +12506,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -11910,10 +12529,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -11951,6 +12570,8 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11961,6 +12582,9 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11975,6 +12599,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -11996,7 +12621,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12023,7 +12648,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12058,6 +12683,8 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12068,6 +12695,9 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12082,6 +12712,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -12103,7 +12734,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12128,7 +12759,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12154,7 +12785,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12179,7 +12810,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12217,6 +12848,8 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12227,6 +12860,9 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12241,6 +12877,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -12262,10 +12899,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12292,10 +12929,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12330,6 +12967,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12340,6 +12979,9 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12354,6 +12996,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -12375,10 +13018,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12403,10 +13046,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12432,10 +13075,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12460,10 +13103,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12501,6 +13144,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12511,6 +13156,9 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12653,6 +13301,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12670,7 +13319,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12701,7 +13350,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12760,6 +13409,8 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12770,6 +13421,9 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12784,6 +13438,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12801,7 +13456,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12829,7 +13484,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12851,7 +13506,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12879,7 +13534,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -12935,6 +13590,8 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12945,6 +13602,9 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12959,6 +13619,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -12976,10 +13637,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13010,10 +13671,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13072,6 +13733,8 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13082,6 +13745,9 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13096,6 +13762,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -13113,10 +13780,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13144,10 +13811,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13169,10 +13836,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13200,10 +13867,10 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13259,6 +13926,8 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13269,6 +13938,9 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13283,6 +13955,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -13305,7 +13978,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13341,7 +14014,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13400,6 +14073,8 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13410,6 +14085,9 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13424,6 +14102,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -13446,7 +14125,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13479,7 +14158,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13506,7 +14185,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13539,7 +14218,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13595,6 +14274,8 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13605,6 +14286,9 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13619,6 +14303,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -13641,10 +14326,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13680,10 +14365,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13742,6 +14427,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13752,6 +14439,9 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13766,6 +14456,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -13788,10 +14479,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13824,10 +14515,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13854,10 +14545,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13890,10 +14581,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -13949,6 +14640,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13959,6 +14652,9 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14101,6 +14797,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -14122,7 +14819,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14149,7 +14846,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14176,7 +14873,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14203,7 +14900,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14260,6 +14957,8 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14270,6 +14969,9 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14288,6 +14990,7 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -14315,12 +15018,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14353,12 +15056,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14391,12 +15094,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14429,12 +15132,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14491,6 +15194,8 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14501,6 +15206,9 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14519,6 +15227,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -14545,7 +15254,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14577,7 +15286,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14609,7 +15318,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14641,7 +15350,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14698,6 +15407,8 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14708,6 +15419,9 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14726,6 +15440,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -14758,12 +15473,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14801,12 +15516,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14844,12 +15559,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14887,12 +15602,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -14949,6 +15664,8 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14959,6 +15676,9 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15025,6 +15745,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -15046,7 +15767,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15073,7 +15794,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15100,7 +15821,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15127,7 +15848,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15184,6 +15905,8 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15194,6 +15917,9 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15212,6 +15938,7 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -15239,12 +15966,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15277,12 +16004,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15315,12 +16042,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15353,12 +16080,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15415,6 +16142,8 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15425,6 +16154,9 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15443,6 +16175,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -15469,7 +16202,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15501,7 +16234,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15533,7 +16266,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15565,7 +16298,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15622,6 +16355,8 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15632,6 +16367,9 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15650,6 +16388,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -15682,12 +16421,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15725,12 +16464,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15768,12 +16507,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15811,12 +16550,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15873,6 +16612,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15883,6 +16624,9 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15917,6 +16661,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -15938,7 +16683,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15965,7 +16710,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -15992,7 +16737,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -16019,7 +16764,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -16076,6 +16821,8 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16086,6 +16833,9 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16104,6 +16854,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -16131,12 +16882,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -16169,12 +16920,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -16207,12 +16958,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -16245,12 +16996,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -16307,6 +17058,8 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16317,6 +17070,9 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16351,6 +17107,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16373,7 +17130,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16409,7 +17166,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16445,7 +17202,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16481,7 +17238,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16578,6 +17335,8 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16588,6 +17347,9 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16606,6 +17368,7 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16634,12 +17397,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16681,12 +17444,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16728,12 +17491,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16775,12 +17538,12 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16877,6 +17640,8 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16887,6 +17652,9 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16905,6 +17673,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16932,7 +17701,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -16973,7 +17742,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -17014,7 +17783,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -17055,7 +17824,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -17152,6 +17921,8 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17162,6 +17933,9 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17180,6 +17954,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17213,12 +17988,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -17265,12 +18040,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -17317,12 +18092,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -17369,12 +18144,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -17471,6 +18246,8 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17481,6 +18258,9 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17547,6 +18327,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17569,7 +18350,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -17605,7 +18386,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -17641,7 +18422,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -17677,7 +18458,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -17774,6 +18555,8 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17784,6 +18567,9 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17802,6 +18588,7 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17830,12 +18617,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -17877,12 +18664,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -17924,12 +18711,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -17971,12 +18758,12 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18073,6 +18860,8 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18083,6 +18872,9 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18101,6 +18893,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18128,7 +18921,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18169,7 +18962,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18210,7 +19003,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18251,7 +19044,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18348,6 +19141,8 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18358,6 +19153,9 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18376,6 +19174,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18409,12 +19208,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18461,12 +19260,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18513,12 +19312,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18565,12 +19364,12 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18667,6 +19466,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18677,6 +19478,9 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18711,6 +19515,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18733,7 +19538,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18769,7 +19574,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18805,7 +19610,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18841,7 +19646,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -18938,6 +19743,8 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18948,6 +19755,9 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18966,6 +19776,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18994,12 +19805,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -19041,12 +19852,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -19088,12 +19899,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -19135,12 +19946,12 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -19237,6 +20048,8 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19247,6 +20060,9 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19281,6 +20097,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -19302,7 +20119,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -19329,7 +20146,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -19356,7 +20173,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -19383,7 +20200,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -19440,6 +20257,8 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19450,6 +20269,9 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19468,6 +20290,7 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -19495,12 +20318,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -19533,12 +20356,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -19571,12 +20394,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -19609,12 +20432,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -19671,6 +20494,8 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19681,6 +20506,9 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19699,6 +20527,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -19725,7 +20554,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -19757,7 +20586,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -19789,7 +20618,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -19821,7 +20650,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -19878,6 +20707,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19888,6 +20719,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19906,6 +20740,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -19938,12 +20773,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -19981,12 +20816,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -20024,12 +20859,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -20067,12 +20902,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -20129,6 +20964,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20139,6 +20976,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20205,6 +21045,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -20226,7 +21067,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20253,7 +21094,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20280,7 +21121,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20307,7 +21148,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20364,6 +21205,8 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20374,6 +21217,9 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20392,6 +21238,7 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -20419,12 +21266,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20457,12 +21304,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20495,12 +21342,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20533,12 +21380,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20595,6 +21442,8 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20605,6 +21454,9 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20623,6 +21475,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -20649,7 +21502,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20681,7 +21534,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20713,7 +21566,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20745,7 +21598,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20802,6 +21655,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20812,6 +21667,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20830,6 +21688,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -20862,12 +21721,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20905,12 +21764,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20948,12 +21807,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -20991,12 +21850,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -21053,6 +21912,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21063,6 +21924,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21097,6 +21961,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -21118,7 +21983,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -21145,7 +22010,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -21172,7 +22037,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -21199,7 +22064,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -21256,6 +22121,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21266,6 +22133,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21284,6 +22154,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -21311,12 +22182,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -21349,12 +22220,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -21387,12 +22258,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -21425,12 +22296,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -21487,6 +22358,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21497,6 +22370,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21531,6 +22407,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21553,7 +22430,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -21589,7 +22466,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -21625,7 +22502,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -21661,7 +22538,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -21758,6 +22635,8 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21768,6 +22647,9 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21786,6 +22668,7 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21814,12 +22697,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -21861,12 +22744,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -21908,12 +22791,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -21955,12 +22838,12 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -22057,6 +22940,8 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22067,6 +22952,9 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22085,6 +22973,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22112,7 +23001,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -22153,7 +23042,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -22194,7 +23083,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -22235,7 +23124,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -22332,6 +23221,8 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22342,6 +23233,9 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22360,6 +23254,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22393,12 +23288,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -22445,12 +23340,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -22497,12 +23392,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -22549,12 +23444,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o();
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_32(); 
@@ -22651,6 +23546,8 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22661,6 +23558,9 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22727,6 +23627,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22749,7 +23650,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -22785,7 +23686,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -22821,7 +23722,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -22857,7 +23758,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -22954,6 +23855,8 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22964,6 +23867,9 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22982,6 +23888,7 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23010,12 +23917,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23057,12 +23964,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23104,12 +24011,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23151,12 +24058,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23253,6 +24160,8 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23263,6 +24172,9 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23281,6 +24193,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23308,7 +24221,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23349,7 +24262,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23390,7 +24303,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23431,7 +24344,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23528,6 +24441,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23538,6 +24453,9 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23556,6 +24474,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23589,12 +24508,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23641,12 +24560,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23693,12 +24612,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23745,12 +24664,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23847,6 +24766,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23857,6 +24778,9 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23891,6 +24815,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23913,7 +24838,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23949,7 +24874,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -23985,7 +24910,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -24021,7 +24946,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -24118,6 +25043,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24128,6 +25055,9 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24146,6 +25076,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24174,12 +25105,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -24221,12 +25152,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -24268,12 +25199,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -24315,12 +25246,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o();
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_32(); 
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_32(); 
@@ -24417,6 +25348,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24427,6 +25360,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24461,6 +25397,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -24477,7 +25414,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -24498,7 +25435,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -24519,7 +25456,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -24540,7 +25477,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -24596,6 +25533,8 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24606,6 +25545,9 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24624,6 +25566,7 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -24640,10 +25583,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -24664,10 +25607,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -24688,10 +25631,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -24712,10 +25655,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -24771,6 +25714,8 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24781,6 +25726,9 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24799,6 +25747,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -24820,7 +25769,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -24846,7 +25795,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -24872,7 +25821,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -24898,7 +25847,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -24954,6 +25903,8 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24964,6 +25915,9 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24982,6 +25936,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -25003,10 +25958,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25032,10 +25987,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25061,10 +26016,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25090,10 +26045,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25149,6 +26104,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25159,6 +26116,9 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25305,6 +26265,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -25322,7 +26283,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25352,7 +26313,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25382,7 +26343,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25412,7 +26373,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25508,6 +26469,8 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25518,6 +26481,9 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25536,6 +26502,7 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -25553,10 +26520,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25586,10 +26553,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25619,10 +26586,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25652,10 +26619,10 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25751,6 +26718,8 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25761,6 +26730,9 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25779,6 +26751,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -25801,7 +26774,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25836,7 +26809,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25871,7 +26844,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -25906,7 +26879,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26002,6 +26975,8 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26012,6 +26987,9 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26030,6 +27008,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -26052,10 +27031,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26090,10 +27069,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26128,10 +27107,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26166,10 +27145,10 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4();
-                       if (bpldat_copy[0] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 31) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) {
                                copybpl4o();
                        }
                        loaded_pix = getbpl4_32(); 
@@ -26265,6 +27244,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26275,6 +27256,9 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
index 1422db66dd81f383d3d008763c09a1f3b082b8f6..274296eaf31d66daa7d9d6c7780b1fc6f79a76b5 100644 (file)
@@ -15,6 +15,7 @@ static void lts_aga_fm2_n0_p2_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -28,7 +29,7 @@ static void lts_aga_fm2_n0_p2_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -49,6 +50,8 @@ static void lts_aga_fm2_n0_p2_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -59,6 +62,9 @@ static void lts_aga_fm2_n0_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -77,6 +83,7 @@ static void lts_aga_fm2_n1_p2_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -90,10 +97,10 @@ static void lts_aga_fm2_n1_p2_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -114,6 +121,8 @@ static void lts_aga_fm2_n1_p2_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -124,6 +133,9 @@ static void lts_aga_fm2_n1_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -142,6 +154,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -160,7 +173,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -181,6 +194,8 @@ static void lts_aga_fm2_dpf0_p2_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -191,6 +206,9 @@ static void lts_aga_fm2_dpf0_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -209,6 +227,7 @@ static void lts_aga_fm2_dpf1_p2_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -227,10 +246,10 @@ static void lts_aga_fm2_dpf1_p2_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -251,6 +270,8 @@ static void lts_aga_fm2_dpf1_p2_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -261,6 +282,9 @@ static void lts_aga_fm2_dpf1_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -327,6 +351,7 @@ static void lts_aga_fm2_n0_p4_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -340,7 +365,7 @@ static void lts_aga_fm2_n0_p4_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -361,6 +386,8 @@ static void lts_aga_fm2_n0_p4_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -371,6 +398,9 @@ static void lts_aga_fm2_n0_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -389,6 +419,7 @@ static void lts_aga_fm2_n1_p4_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -402,10 +433,10 @@ static void lts_aga_fm2_n1_p4_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -426,6 +457,8 @@ static void lts_aga_fm2_n1_p4_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -436,6 +469,9 @@ static void lts_aga_fm2_n1_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -454,6 +490,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -472,7 +509,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -493,6 +530,8 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -503,6 +542,9 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -521,6 +563,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -539,10 +582,10 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -563,6 +606,8 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -573,6 +618,9 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -639,6 +687,7 @@ static void lts_aga_fm2_n0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -652,7 +701,7 @@ static void lts_aga_fm2_n0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -673,6 +722,8 @@ static void lts_aga_fm2_n0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -683,6 +734,9 @@ static void lts_aga_fm2_n0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -701,6 +755,7 @@ static void lts_aga_fm2_n1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -714,10 +769,10 @@ static void lts_aga_fm2_n1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -738,6 +793,8 @@ static void lts_aga_fm2_n1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -748,6 +805,9 @@ static void lts_aga_fm2_n1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -766,6 +826,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -784,7 +845,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -805,6 +866,8 @@ static void lts_aga_fm2_dpf0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -815,6 +878,9 @@ static void lts_aga_fm2_dpf0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -833,6 +899,7 @@ static void lts_aga_fm2_dpf1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -851,10 +918,10 @@ static void lts_aga_fm2_dpf1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -875,6 +942,8 @@ static void lts_aga_fm2_dpf1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -885,6 +954,9 @@ static void lts_aga_fm2_dpf1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -903,6 +975,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -922,7 +995,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -943,6 +1016,8 @@ static void lts_aga_fm2_ehb0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -953,6 +1028,9 @@ static void lts_aga_fm2_ehb0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -971,6 +1049,7 @@ static void lts_aga_fm2_ehb1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -990,10 +1069,10 @@ static void lts_aga_fm2_ehb1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -1014,6 +1093,8 @@ static void lts_aga_fm2_ehb1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1024,6 +1105,9 @@ static void lts_aga_fm2_ehb1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1042,6 +1126,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1055,7 +1140,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -1076,6 +1161,8 @@ static void lts_aga_fm2_ham0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1086,6 +1173,9 @@ static void lts_aga_fm2_ham0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1104,6 +1194,7 @@ static void lts_aga_fm2_ham1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1117,10 +1208,10 @@ static void lts_aga_fm2_ham1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -1141,6 +1232,8 @@ static void lts_aga_fm2_ham1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1151,6 +1244,9 @@ static void lts_aga_fm2_ham1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1169,6 +1265,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1183,7 +1280,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -1204,6 +1301,8 @@ static void lts_aga_fm2_kehb0_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1214,6 +1313,9 @@ static void lts_aga_fm2_kehb0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1232,6 +1334,7 @@ static void lts_aga_fm2_kehb1_p6_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1246,10 +1349,10 @@ static void lts_aga_fm2_kehb1_p6_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -1270,6 +1373,8 @@ static void lts_aga_fm2_kehb1_p6_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1280,6 +1385,9 @@ static void lts_aga_fm2_kehb1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1298,6 +1406,7 @@ static void lts_aga_fm2_n0_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1311,7 +1420,7 @@ static void lts_aga_fm2_n0_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -1332,6 +1441,8 @@ static void lts_aga_fm2_n0_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1342,6 +1453,9 @@ static void lts_aga_fm2_n0_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1360,6 +1474,7 @@ static void lts_aga_fm2_n1_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1373,10 +1488,10 @@ static void lts_aga_fm2_n1_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -1397,6 +1512,8 @@ static void lts_aga_fm2_n1_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1407,6 +1524,9 @@ static void lts_aga_fm2_n1_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1425,6 +1545,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1443,7 +1564,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -1464,6 +1585,8 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1474,6 +1597,9 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1492,6 +1618,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1510,10 +1637,10 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -1534,6 +1661,8 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1544,6 +1673,9 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1578,6 +1710,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1591,7 +1724,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -1612,6 +1745,8 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1622,6 +1757,9 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1640,6 +1778,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -1653,10 +1792,10 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -1677,6 +1816,8 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1687,6 +1828,9 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1721,6 +1865,7 @@ static void lts_aga_fm2_n0_p2_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1735,7 +1880,7 @@ static void lts_aga_fm2_n0_p2_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -1770,6 +1915,8 @@ static void lts_aga_fm2_n0_p2_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1780,6 +1927,9 @@ static void lts_aga_fm2_n0_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1798,6 +1948,7 @@ static void lts_aga_fm2_n1_p2_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1812,10 +1963,10 @@ static void lts_aga_fm2_n1_p2_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -1850,6 +2001,8 @@ static void lts_aga_fm2_n1_p2_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1860,6 +2013,9 @@ static void lts_aga_fm2_n1_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1878,6 +2034,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1897,7 +2054,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -1932,6 +2089,8 @@ static void lts_aga_fm2_dpf0_p2_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1942,6 +2101,9 @@ static void lts_aga_fm2_dpf0_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1960,6 +2122,7 @@ static void lts_aga_fm2_dpf1_p2_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1979,10 +2142,10 @@ static void lts_aga_fm2_dpf1_p2_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -2017,6 +2180,8 @@ static void lts_aga_fm2_dpf1_p2_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2027,6 +2192,9 @@ static void lts_aga_fm2_dpf1_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2093,6 +2261,7 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2107,7 +2276,7 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -2142,6 +2311,8 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2152,6 +2323,9 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2170,6 +2344,7 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2184,10 +2359,10 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -2222,6 +2397,8 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2232,6 +2409,9 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2250,6 +2430,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2269,7 +2450,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -2304,6 +2485,8 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2314,6 +2497,9 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2332,6 +2518,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2351,10 +2538,10 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -2389,6 +2576,8 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2399,6 +2588,9 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2465,6 +2657,7 @@ static void lts_aga_fm2_n0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2479,7 +2672,7 @@ static void lts_aga_fm2_n0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -2514,6 +2707,8 @@ static void lts_aga_fm2_n0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2524,6 +2719,9 @@ static void lts_aga_fm2_n0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2542,6 +2740,7 @@ static void lts_aga_fm2_n1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2556,10 +2755,10 @@ static void lts_aga_fm2_n1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -2594,6 +2793,8 @@ static void lts_aga_fm2_n1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2604,6 +2805,9 @@ static void lts_aga_fm2_n1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2622,6 +2826,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2641,7 +2846,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -2676,6 +2881,8 @@ static void lts_aga_fm2_dpf0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2686,6 +2893,9 @@ static void lts_aga_fm2_dpf0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2704,6 +2914,7 @@ static void lts_aga_fm2_dpf1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2723,10 +2934,10 @@ static void lts_aga_fm2_dpf1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -2761,6 +2972,8 @@ static void lts_aga_fm2_dpf1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2771,6 +2984,9 @@ static void lts_aga_fm2_dpf1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2789,6 +3005,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2809,7 +3026,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -2844,6 +3061,8 @@ static void lts_aga_fm2_ehb0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2854,6 +3073,9 @@ static void lts_aga_fm2_ehb0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2872,6 +3094,7 @@ static void lts_aga_fm2_ehb1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2892,10 +3115,10 @@ static void lts_aga_fm2_ehb1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -2930,6 +3153,8 @@ static void lts_aga_fm2_ehb1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2940,6 +3165,9 @@ static void lts_aga_fm2_ehb1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2958,6 +3186,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -2972,7 +3201,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -3007,6 +3236,8 @@ static void lts_aga_fm2_ham0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3017,6 +3248,9 @@ static void lts_aga_fm2_ham0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3035,6 +3269,7 @@ static void lts_aga_fm2_ham1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3049,10 +3284,10 @@ static void lts_aga_fm2_ham1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -3087,6 +3322,8 @@ static void lts_aga_fm2_ham1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3097,6 +3334,9 @@ static void lts_aga_fm2_ham1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3115,6 +3355,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3130,7 +3371,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -3165,6 +3406,8 @@ static void lts_aga_fm2_kehb0_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3175,6 +3418,9 @@ static void lts_aga_fm2_kehb0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3193,6 +3439,7 @@ static void lts_aga_fm2_kehb1_p6_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3208,10 +3455,10 @@ static void lts_aga_fm2_kehb1_p6_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -3246,6 +3493,8 @@ static void lts_aga_fm2_kehb1_p6_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3256,6 +3505,9 @@ static void lts_aga_fm2_kehb1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3274,6 +3526,7 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3288,7 +3541,7 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3323,6 +3576,8 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3333,6 +3588,9 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3351,6 +3609,7 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3365,10 +3624,10 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3403,6 +3662,8 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3413,6 +3674,9 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3431,6 +3695,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3450,7 +3715,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3485,6 +3750,8 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3495,6 +3762,9 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3513,6 +3783,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3532,10 +3803,10 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3570,6 +3841,8 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3580,6 +3853,9 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3614,6 +3890,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3628,7 +3905,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3663,6 +3940,8 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3673,6 +3952,9 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3691,6 +3973,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3705,10 +3988,10 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3743,6 +4026,8 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3753,6 +4038,9 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3787,6 +4075,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -3800,7 +4089,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -3822,6 +4111,8 @@ static void lts_aga_fm2_n0_p2_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3832,6 +4123,9 @@ static void lts_aga_fm2_n0_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3846,6 +4140,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -3859,7 +4154,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -3876,7 +4171,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -3898,6 +4193,8 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3908,6 +4205,9 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3922,6 +4222,7 @@ static void lts_aga_fm2_n1_p2_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -3935,10 +4236,10 @@ static void lts_aga_fm2_n1_p2_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -3960,6 +4261,8 @@ static void lts_aga_fm2_n1_p2_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3970,6 +4273,9 @@ static void lts_aga_fm2_n1_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3984,6 +4290,7 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -3997,10 +4304,10 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -4017,10 +4324,10 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -4042,6 +4349,8 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4052,6 +4361,9 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4066,6 +4378,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4084,7 +4397,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -4106,6 +4419,8 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4116,6 +4431,9 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4130,6 +4448,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4148,7 +4467,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -4170,7 +4489,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -4192,6 +4511,8 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4202,6 +4523,9 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4216,6 +4540,7 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4234,10 +4559,10 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -4259,6 +4584,8 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4269,6 +4596,9 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4283,6 +4613,7 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4301,10 +4632,10 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -4326,10 +4657,10 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -4351,6 +4682,8 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4361,6 +4694,9 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4423,6 +4759,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4436,7 +4773,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4458,6 +4795,8 @@ static void lts_aga_fm2_n0_p4_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4468,6 +4807,9 @@ static void lts_aga_fm2_n0_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4482,6 +4824,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4495,7 +4838,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4512,7 +4855,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4534,6 +4877,8 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4544,6 +4889,9 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4558,6 +4906,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4571,10 +4920,10 @@ static void lts_aga_fm2_n1_p4_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4596,6 +4945,8 @@ static void lts_aga_fm2_n1_p4_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4606,6 +4957,9 @@ static void lts_aga_fm2_n1_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4620,6 +4974,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4633,10 +4988,10 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4653,10 +5008,10 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4678,6 +5033,8 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4688,6 +5045,9 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4702,6 +5062,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4720,7 +5081,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4742,6 +5103,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4752,6 +5115,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4766,6 +5132,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4784,7 +5151,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4806,7 +5173,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4828,6 +5195,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4838,6 +5207,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4852,6 +5224,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4870,10 +5243,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4895,6 +5268,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4905,6 +5280,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4919,6 +5297,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -4937,10 +5316,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4962,10 +5341,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4987,6 +5366,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4997,6 +5378,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5059,6 +5443,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5072,7 +5457,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5094,6 +5479,8 @@ static void lts_aga_fm2_n0_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5104,6 +5491,9 @@ static void lts_aga_fm2_n0_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5118,6 +5508,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5131,7 +5522,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5148,7 +5539,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5170,6 +5561,8 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5180,6 +5573,9 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5194,6 +5590,7 @@ static void lts_aga_fm2_n1_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5207,10 +5604,10 @@ static void lts_aga_fm2_n1_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5232,6 +5629,8 @@ static void lts_aga_fm2_n1_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5242,6 +5641,9 @@ static void lts_aga_fm2_n1_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5256,6 +5658,7 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5269,10 +5672,10 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5289,10 +5692,10 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5314,6 +5717,8 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5324,6 +5729,9 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5338,6 +5746,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5356,7 +5765,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5378,6 +5787,8 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5388,6 +5799,9 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5402,6 +5816,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5420,7 +5835,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5442,7 +5857,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5464,6 +5879,8 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5474,6 +5891,9 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5488,6 +5908,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5506,10 +5927,10 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5531,6 +5952,8 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5541,6 +5964,9 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5555,6 +5981,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5573,10 +6000,10 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5598,10 +6025,10 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5623,6 +6050,8 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5633,6 +6062,9 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5647,6 +6079,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5666,7 +6099,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5688,6 +6121,8 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5698,6 +6133,9 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5712,6 +6150,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5731,7 +6170,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5754,7 +6193,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5776,6 +6215,8 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5786,6 +6227,9 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5800,6 +6244,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5819,10 +6264,10 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5844,6 +6289,8 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5854,6 +6301,9 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5868,6 +6318,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5887,10 +6338,10 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5913,10 +6364,10 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5938,6 +6389,8 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5948,6 +6401,9 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5962,6 +6418,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -5975,7 +6432,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -5991,7 +6448,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -6012,6 +6469,8 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6022,6 +6481,9 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6036,6 +6498,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6049,7 +6512,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -6066,7 +6529,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -6088,6 +6551,8 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6098,6 +6563,9 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6112,6 +6580,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6125,10 +6594,10 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -6144,10 +6613,10 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -6168,6 +6637,8 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6178,6 +6649,9 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6192,6 +6666,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6205,10 +6680,10 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -6225,10 +6700,10 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -6250,6 +6725,8 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6260,6 +6737,9 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6274,6 +6754,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6288,7 +6769,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -6310,6 +6791,8 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6320,6 +6803,9 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6334,6 +6820,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6348,7 +6835,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -6366,7 +6853,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -6388,6 +6875,8 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6398,6 +6887,9 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6412,6 +6904,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6426,10 +6919,10 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -6451,6 +6944,8 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6461,6 +6956,9 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6475,6 +6973,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6489,10 +6988,10 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -6510,10 +7009,10 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -6535,6 +7034,8 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6545,6 +7046,9 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6559,6 +7063,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6572,7 +7077,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -6594,6 +7099,8 @@ static void lts_aga_fm2_n0_p8_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6604,6 +7111,9 @@ static void lts_aga_fm2_n0_p8_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6618,6 +7128,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6631,7 +7142,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -6648,7 +7159,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -6670,6 +7181,8 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6680,6 +7193,9 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6694,6 +7210,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6707,10 +7224,10 @@ static void lts_aga_fm2_n1_p8_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -6732,6 +7249,8 @@ static void lts_aga_fm2_n1_p8_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6742,6 +7261,9 @@ static void lts_aga_fm2_n1_p8_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6756,6 +7278,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6769,10 +7292,10 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -6789,10 +7312,10 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -6814,6 +7337,8 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6824,6 +7349,9 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6838,6 +7366,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6856,7 +7385,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -6878,6 +7407,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6888,6 +7419,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6902,6 +7436,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -6920,7 +7455,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -6942,7 +7477,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -6964,6 +7499,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6974,6 +7511,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6988,6 +7528,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7006,10 +7547,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -7031,6 +7572,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7041,6 +7584,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7055,6 +7601,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7073,10 +7620,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -7098,10 +7645,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -7123,6 +7670,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7133,6 +7682,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7163,6 +7715,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7176,7 +7729,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -7192,7 +7745,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -7213,6 +7766,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7223,6 +7778,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7237,6 +7795,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7250,7 +7809,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -7267,7 +7826,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -7289,6 +7848,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7299,6 +7860,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7313,6 +7877,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7326,10 +7891,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -7345,10 +7910,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -7369,6 +7934,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7379,6 +7946,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7393,6 +7963,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -7406,10 +7977,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -7426,10 +7997,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -7451,6 +8022,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7461,6 +8034,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7491,6 +8067,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7505,7 +8082,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -7541,6 +8118,8 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7551,6 +8130,9 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7565,6 +8147,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7579,7 +8162,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -7604,7 +8187,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -7633,6 +8216,8 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7643,6 +8228,9 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7657,6 +8245,7 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7671,10 +8260,10 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -7710,6 +8299,8 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7720,6 +8311,9 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7734,6 +8328,7 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7748,10 +8343,10 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -7776,10 +8371,10 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -7808,6 +8403,8 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7818,6 +8415,9 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7832,6 +8432,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7851,7 +8452,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -7887,6 +8488,8 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7897,6 +8500,9 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7911,6 +8517,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7930,7 +8537,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -7960,7 +8567,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -7989,6 +8596,8 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7999,6 +8608,9 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8013,6 +8625,7 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8032,10 +8645,10 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -8071,6 +8684,8 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8081,6 +8696,9 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8095,6 +8713,7 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8114,10 +8733,10 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -8147,10 +8766,10 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -8179,6 +8798,8 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8189,6 +8810,9 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8251,6 +8875,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8265,7 +8890,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8301,6 +8926,8 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8311,6 +8938,9 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8325,6 +8955,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8339,7 +8970,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8364,7 +8995,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8393,6 +9024,8 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8403,6 +9036,9 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8417,6 +9053,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8431,10 +9068,10 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8470,6 +9107,8 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8480,6 +9119,9 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8494,6 +9136,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8508,10 +9151,10 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8536,10 +9179,10 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8568,6 +9211,8 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8578,6 +9223,9 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8592,6 +9240,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8611,7 +9260,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8647,6 +9296,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8657,6 +9308,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8671,6 +9325,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8690,7 +9345,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8720,7 +9375,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8749,6 +9404,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8759,6 +9416,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8773,6 +9433,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8792,10 +9453,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8831,6 +9492,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8841,6 +9504,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8855,6 +9521,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8874,10 +9541,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8907,10 +9574,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8939,6 +9606,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8949,6 +9618,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9011,6 +9683,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9025,7 +9698,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9061,6 +9734,8 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9071,6 +9746,9 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9085,6 +9763,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9099,7 +9778,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9124,7 +9803,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9153,6 +9832,8 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9163,6 +9844,9 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9177,6 +9861,7 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9191,10 +9876,10 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9230,6 +9915,8 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9240,6 +9927,9 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9254,6 +9944,7 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9268,10 +9959,10 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9296,10 +9987,10 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9328,6 +10019,8 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9338,6 +10031,9 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9352,6 +10048,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9371,7 +10068,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9407,6 +10104,8 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9417,6 +10116,9 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9431,6 +10133,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9450,7 +10153,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9480,7 +10183,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9509,6 +10212,8 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9519,6 +10224,9 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9533,6 +10241,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9552,10 +10261,10 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9591,6 +10300,8 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9601,6 +10312,9 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9615,6 +10329,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9634,10 +10349,10 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9667,10 +10382,10 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9699,6 +10414,8 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9709,6 +10426,9 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9723,6 +10443,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9743,7 +10464,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9779,6 +10500,8 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9789,6 +10512,9 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9803,6 +10529,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9823,7 +10550,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9854,7 +10581,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9883,6 +10610,8 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9893,6 +10622,9 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9907,6 +10639,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -9927,10 +10660,10 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -9966,6 +10699,8 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9976,6 +10711,9 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9990,6 +10728,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10010,10 +10749,10 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10044,10 +10783,10 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10076,6 +10815,8 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10086,6 +10827,9 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10100,6 +10844,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10114,7 +10859,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10138,7 +10883,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10165,6 +10910,8 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10175,6 +10922,9 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10189,6 +10939,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10203,7 +10954,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10228,7 +10979,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10257,6 +11008,8 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10267,6 +11020,9 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10281,6 +11037,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10295,10 +11052,10 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10322,10 +11079,10 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10352,6 +11109,8 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10362,6 +11121,9 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10376,6 +11138,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10390,10 +11153,10 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10418,10 +11181,10 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10450,6 +11213,8 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10460,6 +11225,9 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10474,6 +11242,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10489,7 +11258,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10525,6 +11294,8 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10535,6 +11306,9 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10549,6 +11323,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10564,7 +11339,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10590,7 +11365,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10619,6 +11394,8 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10629,6 +11406,9 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10643,6 +11423,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10658,10 +11439,10 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10697,6 +11478,8 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10707,6 +11490,9 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10721,6 +11507,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10736,10 +11523,10 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10765,10 +11552,10 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -10797,6 +11584,8 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10807,6 +11596,9 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10821,6 +11613,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10835,7 +11628,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -10871,6 +11664,8 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10881,6 +11676,9 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10895,6 +11693,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10909,7 +11708,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -10934,7 +11733,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -10963,6 +11762,8 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10973,6 +11774,9 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10987,6 +11791,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11001,10 +11806,10 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11040,6 +11845,8 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11050,6 +11857,9 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11064,6 +11874,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11078,10 +11889,10 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11106,10 +11917,10 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11138,6 +11949,8 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11148,6 +11961,9 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11162,6 +11978,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11181,7 +11998,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11217,6 +12034,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11227,6 +12046,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11241,6 +12063,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11260,7 +12083,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11290,7 +12113,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11319,6 +12142,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11329,6 +12154,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11343,6 +12171,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11362,10 +12191,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11401,6 +12230,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11411,6 +12242,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11425,6 +12259,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11444,10 +12279,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11477,10 +12312,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11509,6 +12344,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11519,6 +12356,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11549,6 +12389,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11563,7 +12404,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11587,7 +12428,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11614,6 +12455,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11624,6 +12467,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11638,6 +12484,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11652,7 +12499,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11677,7 +12524,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11706,6 +12553,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11716,6 +12565,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11730,6 +12582,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11744,10 +12597,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11771,10 +12624,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11801,6 +12654,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11811,6 +12666,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11825,6 +12683,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11839,10 +12698,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11867,10 +12726,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11899,6 +12758,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11909,6 +12770,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12579,6 +13443,7 @@ static void lts_aga_fm2_n0_p2_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -12597,7 +13462,7 @@ static void lts_aga_fm2_n0_p2_ilores_dhires(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -12621,7 +13486,7 @@ static void lts_aga_fm2_n0_p2_ilores_dhires(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -12652,6 +13517,8 @@ static void lts_aga_fm2_n0_p2_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12662,6 +13529,9 @@ static void lts_aga_fm2_n0_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12680,6 +13550,7 @@ static void lts_aga_fm2_n1_p2_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -12704,12 +13575,12 @@ static void lts_aga_fm2_n1_p2_ilores_dhires(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -12739,12 +13610,12 @@ static void lts_aga_fm2_n1_p2_ilores_dhires(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -12775,6 +13646,8 @@ static void lts_aga_fm2_n1_p2_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12785,6 +13658,9 @@ static void lts_aga_fm2_n1_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12803,6 +13679,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -12826,7 +13703,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -12855,7 +13732,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -12886,6 +13763,8 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12896,6 +13775,9 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12914,6 +13796,7 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -12943,12 +13826,12 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -12983,12 +13866,12 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -13019,6 +13902,8 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13029,6 +13914,9 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13095,6 +13983,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13113,7 +14002,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -13137,7 +14026,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -13168,6 +14057,8 @@ static void lts_aga_fm2_n0_p4_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13178,6 +14069,9 @@ static void lts_aga_fm2_n0_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13196,6 +14090,7 @@ static void lts_aga_fm2_n1_p4_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13220,12 +14115,12 @@ static void lts_aga_fm2_n1_p4_ilores_dhires(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -13255,12 +14150,12 @@ static void lts_aga_fm2_n1_p4_ilores_dhires(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -13291,6 +14186,8 @@ static void lts_aga_fm2_n1_p4_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13301,6 +14198,9 @@ static void lts_aga_fm2_n1_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13319,6 +14219,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13342,7 +14243,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -13371,7 +14272,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -13402,6 +14303,8 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13412,6 +14315,9 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13430,6 +14336,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13459,12 +14366,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -13499,12 +14406,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -13535,6 +14442,8 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13545,6 +14454,9 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13611,6 +14523,7 @@ static void lts_aga_fm2_n0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13629,7 +14542,7 @@ static void lts_aga_fm2_n0_p6_ilores_dhires(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -13653,7 +14566,7 @@ static void lts_aga_fm2_n0_p6_ilores_dhires(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -13684,6 +14597,8 @@ static void lts_aga_fm2_n0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13694,6 +14609,9 @@ static void lts_aga_fm2_n0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13712,6 +14630,7 @@ static void lts_aga_fm2_n1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13736,12 +14655,12 @@ static void lts_aga_fm2_n1_p6_ilores_dhires(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -13771,12 +14690,12 @@ static void lts_aga_fm2_n1_p6_ilores_dhires(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -13807,6 +14726,8 @@ static void lts_aga_fm2_n1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13817,6 +14738,9 @@ static void lts_aga_fm2_n1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13835,6 +14759,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13858,7 +14783,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -13887,7 +14812,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -13918,6 +14843,8 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13928,6 +14855,9 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13946,6 +14876,7 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -13975,12 +14906,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -14015,12 +14946,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -14051,6 +14982,8 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14061,6 +14994,9 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14079,6 +15015,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14103,7 +15040,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -14133,7 +15070,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -14164,6 +15101,8 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14174,6 +15113,9 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14192,6 +15134,7 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14222,12 +15165,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -14263,12 +15206,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -14299,6 +15242,8 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14309,6 +15254,9 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14327,6 +15275,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14345,7 +15294,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -14369,7 +15318,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -14400,6 +15349,8 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14410,6 +15361,9 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14428,6 +15382,7 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14452,12 +15407,12 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -14487,12 +15442,12 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -14523,6 +15478,8 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14533,6 +15490,9 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14551,6 +15511,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14570,7 +15531,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -14595,7 +15556,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -14626,6 +15587,8 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14636,6 +15599,9 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14654,6 +15620,7 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14679,12 +15646,12 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -14715,12 +15682,12 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -14751,6 +15718,8 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14761,6 +15730,9 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14779,6 +15751,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14797,7 +15770,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -14821,7 +15794,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -14852,6 +15825,8 @@ static void lts_aga_fm2_n0_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14862,6 +15837,9 @@ static void lts_aga_fm2_n0_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14880,6 +15858,7 @@ static void lts_aga_fm2_n1_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -14904,12 +15883,12 @@ static void lts_aga_fm2_n1_p8_ilores_dhires(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -14939,12 +15918,12 @@ static void lts_aga_fm2_n1_p8_ilores_dhires(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -14975,6 +15954,8 @@ static void lts_aga_fm2_n1_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14985,6 +15966,9 @@ static void lts_aga_fm2_n1_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15003,6 +15987,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -15026,7 +16011,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -15055,7 +16040,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -15086,6 +16071,8 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15096,6 +16083,9 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15114,6 +16104,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -15143,12 +16134,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -15183,12 +16174,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -15219,6 +16210,8 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15229,6 +16222,9 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15263,6 +16259,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -15281,7 +16278,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -15305,7 +16302,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -15336,6 +16333,8 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15346,6 +16345,9 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15364,6 +16366,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -15388,12 +16391,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -15423,12 +16426,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -15459,6 +16462,8 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15469,6 +16474,9 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15503,6 +16511,7 @@ static void lts_aga_fm2_n0_p2_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15522,7 +16531,7 @@ static void lts_aga_fm2_n0_p2_ilores_dhires_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -15555,7 +16564,7 @@ static void lts_aga_fm2_n0_p2_ilores_dhires_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -15606,6 +16615,8 @@ static void lts_aga_fm2_n0_p2_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15616,6 +16627,9 @@ static void lts_aga_fm2_n0_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15634,6 +16648,7 @@ static void lts_aga_fm2_n1_p2_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15659,12 +16674,12 @@ static void lts_aga_fm2_n1_p2_ilores_dhires_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -15703,12 +16718,12 @@ static void lts_aga_fm2_n1_p2_ilores_dhires_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -15759,6 +16774,8 @@ static void lts_aga_fm2_n1_p2_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15769,6 +16786,9 @@ static void lts_aga_fm2_n1_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15787,6 +16807,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15811,7 +16832,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -15849,7 +16870,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -15900,6 +16921,8 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15910,6 +16933,9 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15928,6 +16954,7 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15958,12 +16985,12 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -16007,12 +17034,12 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -16063,6 +17090,8 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16073,6 +17102,9 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16139,6 +17171,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16158,7 +17191,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -16191,7 +17224,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -16242,6 +17275,8 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16252,6 +17287,9 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16270,6 +17308,7 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16295,12 +17334,12 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -16339,12 +17378,12 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -16395,6 +17434,8 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16405,6 +17446,9 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16423,6 +17467,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16447,7 +17492,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -16485,7 +17530,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -16536,6 +17581,8 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16546,6 +17593,9 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16564,6 +17614,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16594,12 +17645,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -16643,12 +17694,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -16699,6 +17750,8 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16709,6 +17762,9 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16775,6 +17831,7 @@ static void lts_aga_fm2_n0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16794,7 +17851,7 @@ static void lts_aga_fm2_n0_p6_ilores_dhires_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -16827,7 +17884,7 @@ static void lts_aga_fm2_n0_p6_ilores_dhires_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -16878,6 +17935,8 @@ static void lts_aga_fm2_n0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16888,6 +17947,9 @@ static void lts_aga_fm2_n0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16906,6 +17968,7 @@ static void lts_aga_fm2_n1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16931,12 +17994,12 @@ static void lts_aga_fm2_n1_p6_ilores_dhires_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -16975,12 +18038,12 @@ static void lts_aga_fm2_n1_p6_ilores_dhires_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -17031,6 +18094,8 @@ static void lts_aga_fm2_n1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17041,6 +18106,9 @@ static void lts_aga_fm2_n1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17059,6 +18127,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17083,7 +18152,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -17121,7 +18190,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -17172,6 +18241,8 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17182,6 +18253,9 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17200,6 +18274,7 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17230,12 +18305,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -17279,12 +18354,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -17335,6 +18410,8 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17345,6 +18422,9 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17363,6 +18443,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17388,7 +18469,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -17427,7 +18508,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -17478,6 +18559,8 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17488,6 +18571,9 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17506,6 +18592,7 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17537,12 +18624,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -17587,12 +18674,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -17643,6 +18730,8 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17653,6 +18742,9 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17671,6 +18763,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17690,7 +18783,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -17723,7 +18816,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -17774,6 +18867,8 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17784,6 +18879,9 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17802,6 +18900,7 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17827,12 +18926,12 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -17871,12 +18970,12 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -17927,6 +19026,8 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17937,6 +19038,9 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17955,6 +19059,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17975,7 +19080,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -18009,7 +19114,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -18060,6 +19165,8 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18070,6 +19177,9 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18088,6 +19198,7 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18114,12 +19225,12 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -18159,12 +19270,12 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -18215,6 +19326,8 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18225,6 +19338,9 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18243,6 +19359,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18262,7 +19379,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -18295,7 +19412,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -18346,6 +19463,8 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18356,6 +19475,9 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18374,6 +19496,7 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18399,12 +19522,12 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -18443,12 +19566,12 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -18499,6 +19622,8 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18509,6 +19634,9 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18527,6 +19655,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18551,7 +19680,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -18589,7 +19718,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -18640,6 +19769,8 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18650,6 +19781,9 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18668,6 +19802,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18698,12 +19833,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -18747,12 +19882,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -18803,6 +19938,8 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18813,6 +19950,9 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18847,6 +19987,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -18866,7 +20007,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -18899,7 +20040,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -18950,6 +20091,8 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18960,6 +20103,9 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18978,6 +20124,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -19003,12 +20150,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -19047,12 +20194,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -19103,6 +20250,8 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19113,6 +20262,9 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19147,6 +20299,7 @@ static void lts_aga_fm2_n0_p2_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19160,7 +20313,7 @@ static void lts_aga_fm2_n0_p2_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -19178,7 +20331,7 @@ static void lts_aga_fm2_n0_p2_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -19208,6 +20361,8 @@ static void lts_aga_fm2_n0_p2_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19218,6 +20373,9 @@ static void lts_aga_fm2_n0_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19236,6 +20394,7 @@ static void lts_aga_fm2_n1_p2_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19249,10 +20408,10 @@ static void lts_aga_fm2_n1_p2_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -19270,10 +20429,10 @@ static void lts_aga_fm2_n1_p2_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -19303,6 +20462,8 @@ static void lts_aga_fm2_n1_p2_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19313,6 +20474,9 @@ static void lts_aga_fm2_n1_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19331,6 +20495,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19349,7 +20514,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -19372,7 +20537,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -19402,6 +20567,8 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19412,6 +20579,9 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19430,6 +20600,7 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19448,10 +20619,10 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -19474,10 +20645,10 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -19507,6 +20678,8 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19517,6 +20690,9 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19583,6 +20759,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19596,7 +20773,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -19614,7 +20791,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -19644,6 +20821,8 @@ static void lts_aga_fm2_n0_p4_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19654,6 +20833,9 @@ static void lts_aga_fm2_n0_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19672,6 +20854,7 @@ static void lts_aga_fm2_n1_p4_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19685,10 +20868,10 @@ static void lts_aga_fm2_n1_p4_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -19706,10 +20889,10 @@ static void lts_aga_fm2_n1_p4_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -19739,6 +20922,8 @@ static void lts_aga_fm2_n1_p4_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19749,6 +20934,9 @@ static void lts_aga_fm2_n1_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19767,6 +20955,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19785,7 +20974,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -19808,7 +20997,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -19838,6 +21027,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19848,6 +21039,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19866,6 +21060,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -19884,10 +21079,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -19910,10 +21105,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -19943,6 +21138,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19953,6 +21150,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20019,6 +21219,7 @@ static void lts_aga_fm2_n0_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20032,7 +21233,7 @@ static void lts_aga_fm2_n0_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20050,7 +21251,7 @@ static void lts_aga_fm2_n0_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20080,6 +21281,8 @@ static void lts_aga_fm2_n0_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20090,6 +21293,9 @@ static void lts_aga_fm2_n0_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20108,6 +21314,7 @@ static void lts_aga_fm2_n1_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20121,10 +21328,10 @@ static void lts_aga_fm2_n1_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20142,10 +21349,10 @@ static void lts_aga_fm2_n1_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20175,6 +21382,8 @@ static void lts_aga_fm2_n1_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20185,6 +21394,9 @@ static void lts_aga_fm2_n1_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20203,6 +21415,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20221,7 +21434,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20244,7 +21457,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20274,6 +21487,8 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20284,6 +21499,9 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20302,6 +21520,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20320,10 +21539,10 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20346,10 +21565,10 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20379,6 +21598,8 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20389,6 +21610,9 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20407,6 +21631,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20426,7 +21651,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20450,7 +21675,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20480,6 +21705,8 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20490,6 +21717,9 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20508,6 +21738,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20527,10 +21758,10 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20554,10 +21785,10 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20587,6 +21818,8 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20597,6 +21830,9 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20615,6 +21851,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20628,7 +21865,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20646,7 +21883,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20676,6 +21913,8 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20686,6 +21925,9 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20704,6 +21946,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20717,10 +21960,10 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20738,10 +21981,10 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20771,6 +22014,8 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20781,6 +22026,9 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20799,6 +22047,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20813,7 +22062,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20832,7 +22081,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20862,6 +22111,8 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20872,6 +22123,9 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20890,6 +22144,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -20904,10 +22159,10 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20926,10 +22181,10 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -20959,6 +22214,8 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20969,6 +22226,9 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20987,6 +22247,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21000,7 +22261,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -21018,7 +22279,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -21048,6 +22309,8 @@ static void lts_aga_fm2_n0_p8_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21058,6 +22321,9 @@ static void lts_aga_fm2_n0_p8_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21076,6 +22342,7 @@ static void lts_aga_fm2_n1_p8_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21089,10 +22356,10 @@ static void lts_aga_fm2_n1_p8_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -21110,10 +22377,10 @@ static void lts_aga_fm2_n1_p8_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -21143,6 +22410,8 @@ static void lts_aga_fm2_n1_p8_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21153,6 +22422,9 @@ static void lts_aga_fm2_n1_p8_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21171,6 +22443,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21189,7 +22462,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -21212,7 +22485,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -21242,6 +22515,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21252,6 +22527,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21270,6 +22548,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21288,10 +22567,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -21314,10 +22593,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -21347,6 +22626,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21357,6 +22638,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21391,6 +22675,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21404,7 +22689,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -21422,7 +22707,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -21452,6 +22737,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21462,6 +22749,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21480,6 +22770,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -21493,10 +22784,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -21514,10 +22805,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -21547,6 +22838,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21557,6 +22850,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21591,6 +22887,7 @@ static void lts_aga_fm2_n0_p2_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21605,7 +22902,7 @@ static void lts_aga_fm2_n0_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -21632,7 +22929,7 @@ static void lts_aga_fm2_n0_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -21682,6 +22979,8 @@ static void lts_aga_fm2_n0_p2_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21692,6 +22991,9 @@ static void lts_aga_fm2_n0_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21710,6 +23012,7 @@ static void lts_aga_fm2_n1_p2_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21724,10 +23027,10 @@ static void lts_aga_fm2_n1_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -21754,10 +23057,10 @@ static void lts_aga_fm2_n1_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -21807,6 +23110,8 @@ static void lts_aga_fm2_n1_p2_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21817,6 +23122,9 @@ static void lts_aga_fm2_n1_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21835,6 +23143,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21854,7 +23163,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -21886,7 +23195,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -21936,6 +23245,8 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21946,6 +23257,9 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21964,6 +23278,7 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21983,10 +23298,10 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -22018,10 +23333,10 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -22071,6 +23386,8 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22081,6 +23398,9 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22147,6 +23467,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22161,7 +23482,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -22188,7 +23509,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -22238,6 +23559,8 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22248,6 +23571,9 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22266,6 +23592,7 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22280,10 +23607,10 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -22310,10 +23637,10 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -22363,6 +23690,8 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22373,6 +23702,9 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22391,6 +23723,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22410,7 +23743,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -22442,7 +23775,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -22492,6 +23825,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22502,6 +23837,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22520,6 +23858,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22539,10 +23878,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -22574,10 +23913,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -22627,6 +23966,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22637,6 +23978,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22703,6 +24047,7 @@ static void lts_aga_fm2_n0_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22717,7 +24062,7 @@ static void lts_aga_fm2_n0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -22744,7 +24089,7 @@ static void lts_aga_fm2_n0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -22794,6 +24139,8 @@ static void lts_aga_fm2_n0_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22804,6 +24151,9 @@ static void lts_aga_fm2_n0_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22822,6 +24172,7 @@ static void lts_aga_fm2_n1_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22836,10 +24187,10 @@ static void lts_aga_fm2_n1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -22866,10 +24217,10 @@ static void lts_aga_fm2_n1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -22919,6 +24270,8 @@ static void lts_aga_fm2_n1_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22929,6 +24282,9 @@ static void lts_aga_fm2_n1_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22947,6 +24303,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22966,7 +24323,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -22998,7 +24355,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23048,6 +24405,8 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23058,6 +24417,9 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23076,6 +24438,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23095,10 +24458,10 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23130,10 +24493,10 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23183,6 +24546,8 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23193,6 +24558,9 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23211,6 +24579,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23231,7 +24600,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23264,7 +24633,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23314,6 +24683,8 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23324,6 +24695,9 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23342,6 +24716,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23362,10 +24737,10 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23398,10 +24773,10 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23451,6 +24826,8 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23461,6 +24838,9 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23479,6 +24859,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23493,7 +24874,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23520,7 +24901,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23570,6 +24951,8 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23580,6 +24963,9 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23598,6 +24984,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23612,10 +24999,10 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23642,10 +25029,10 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23695,6 +25082,8 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23705,6 +25094,9 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23723,6 +25115,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23738,7 +25131,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23766,7 +25159,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23816,6 +25209,8 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23826,6 +25221,9 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23844,6 +25242,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23859,10 +25258,10 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23890,10 +25289,10 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -23943,6 +25342,8 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23953,6 +25354,9 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23971,6 +25375,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -23985,7 +25390,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -24012,7 +25417,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -24062,6 +25467,8 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24072,6 +25479,9 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24090,6 +25500,7 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24104,10 +25515,10 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -24134,10 +25545,10 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -24187,6 +25598,8 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24197,6 +25610,9 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24215,6 +25631,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24234,7 +25651,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -24266,7 +25683,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -24316,6 +25733,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24326,6 +25745,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24344,6 +25766,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24363,10 +25786,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -24398,10 +25821,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -24451,6 +25874,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24461,6 +25886,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24495,6 +25923,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24509,7 +25938,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -24536,7 +25965,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -24586,6 +26015,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24596,6 +26027,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24614,6 +26048,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -24628,10 +26063,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -24658,10 +26093,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -24711,6 +26146,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24721,6 +26158,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24755,6 +26195,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -24768,7 +26209,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -24787,7 +26228,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -24818,6 +26259,8 @@ static void lts_aga_fm2_n0_p2_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24828,6 +26271,9 @@ static void lts_aga_fm2_n0_p2_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24842,6 +26288,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -24855,7 +26302,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -24872,7 +26319,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -24890,7 +26337,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -24907,7 +26354,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -24939,6 +26386,8 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24949,6 +26398,9 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24963,6 +26415,7 @@ static void lts_aga_fm2_n1_p2_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -24976,10 +26429,10 @@ static void lts_aga_fm2_n1_p2_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -24998,10 +26451,10 @@ static void lts_aga_fm2_n1_p2_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25032,6 +26485,8 @@ static void lts_aga_fm2_n1_p2_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25042,6 +26497,9 @@ static void lts_aga_fm2_n1_p2_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25056,6 +26514,7 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25069,10 +26528,10 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25089,10 +26548,10 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25110,10 +26569,10 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25130,10 +26589,10 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25165,6 +26624,8 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25175,6 +26636,9 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25189,6 +26653,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25207,7 +26672,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25231,7 +26696,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25262,6 +26727,8 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25272,6 +26739,9 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25286,6 +26756,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25304,7 +26775,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25326,7 +26797,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25349,7 +26820,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25371,7 +26842,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25403,6 +26874,8 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25413,6 +26886,9 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25427,6 +26903,7 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25445,10 +26922,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25472,10 +26949,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25506,6 +26983,8 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25516,6 +26995,9 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25530,6 +27012,7 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25548,10 +27031,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25573,10 +27056,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25599,10 +27082,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25624,10 +27107,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -25659,6 +27142,8 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25669,6 +27154,9 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25731,6 +27219,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25744,7 +27233,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -25763,7 +27252,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -25794,6 +27283,8 @@ static void lts_aga_fm2_n0_p4_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25804,6 +27295,9 @@ static void lts_aga_fm2_n0_p4_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25818,6 +27312,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25831,7 +27326,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -25848,7 +27343,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -25866,7 +27361,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -25883,7 +27378,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -25915,6 +27410,8 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25925,6 +27422,9 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25939,6 +27439,7 @@ static void lts_aga_fm2_n1_p4_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -25952,10 +27453,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -25974,10 +27475,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26008,6 +27509,8 @@ static void lts_aga_fm2_n1_p4_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26018,6 +27521,9 @@ static void lts_aga_fm2_n1_p4_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26032,6 +27538,7 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -26045,10 +27552,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26065,10 +27572,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26086,10 +27593,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26106,10 +27613,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26141,6 +27648,8 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26151,6 +27660,9 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26165,6 +27677,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -26183,7 +27696,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26207,7 +27720,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26238,6 +27751,8 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26248,6 +27763,9 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26262,6 +27780,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -26280,7 +27799,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26302,7 +27821,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26325,7 +27844,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26347,7 +27866,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26379,6 +27898,8 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26389,6 +27910,9 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26403,6 +27927,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -26421,10 +27946,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26448,10 +27973,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26482,6 +28007,8 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26492,6 +28019,9 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26506,6 +28036,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -26524,10 +28055,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26549,10 +28080,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26575,10 +28106,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26600,10 +28131,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -26635,6 +28166,8 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26645,6 +28178,9 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26707,6 +28243,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -26720,7 +28257,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -26739,7 +28276,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -26770,6 +28307,8 @@ static void lts_aga_fm2_n0_p6_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26780,6 +28319,9 @@ static void lts_aga_fm2_n0_p6_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26794,6 +28336,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -26807,7 +28350,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -26824,7 +28367,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -26842,7 +28385,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -26859,7 +28402,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -26891,6 +28434,8 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26901,6 +28446,9 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26915,6 +28463,7 @@ static void lts_aga_fm2_n1_p6_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -26928,10 +28477,10 @@ static void lts_aga_fm2_n1_p6_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -26950,10 +28499,10 @@ static void lts_aga_fm2_n1_p6_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -26984,6 +28533,8 @@ static void lts_aga_fm2_n1_p6_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26994,6 +28545,9 @@ static void lts_aga_fm2_n1_p6_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27008,6 +28562,7 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -27021,10 +28576,10 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27041,10 +28596,10 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27062,10 +28617,10 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27082,10 +28637,10 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27117,6 +28672,8 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27127,6 +28684,9 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27141,6 +28701,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -27159,7 +28720,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27183,7 +28744,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27214,6 +28775,8 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27224,6 +28787,9 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27238,6 +28804,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -27256,7 +28823,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27278,7 +28845,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27301,7 +28868,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27323,7 +28890,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27355,6 +28922,8 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27365,6 +28934,9 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27379,6 +28951,7 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -27397,10 +28970,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27424,10 +28997,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27458,6 +29031,8 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27468,6 +29043,9 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27482,6 +29060,7 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -27500,10 +29079,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27525,10 +29104,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27551,10 +29130,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27576,10 +29155,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27611,6 +29190,8 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27621,6 +29202,9 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27635,6 +29219,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -27654,7 +29239,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27679,7 +29264,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27710,6 +29295,8 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27720,6 +29307,9 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27734,6 +29324,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -27753,7 +29344,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27776,7 +29367,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27800,7 +29391,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27823,7 +29414,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27855,6 +29446,8 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27865,6 +29458,9 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27879,6 +29475,7 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -27898,10 +29495,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27926,10 +29523,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -27960,6 +29557,8 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27970,6 +29569,9 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27984,6 +29586,7 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -28003,10 +29606,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28029,10 +29632,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28056,10 +29659,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28082,10 +29685,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28117,6 +29720,8 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28127,6 +29732,9 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28141,6 +29749,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -28154,7 +29763,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28170,7 +29779,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28188,7 +29797,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28204,7 +29813,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28234,6 +29843,8 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28244,6 +29855,9 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28258,6 +29872,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -28271,7 +29886,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28288,7 +29903,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28306,7 +29921,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28323,7 +29938,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28355,6 +29970,8 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28365,6 +29982,9 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28379,6 +29999,7 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -28392,10 +30013,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28411,10 +30032,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28432,10 +30053,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28451,10 +30072,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28484,6 +30105,8 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28494,6 +30117,9 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28508,6 +30134,7 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -28521,10 +30148,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28541,10 +30168,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28562,10 +30189,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28582,10 +30209,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28617,6 +30244,8 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28627,6 +30256,9 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28641,6 +30273,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -28655,7 +30288,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28675,7 +30308,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28706,6 +30339,8 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28716,6 +30351,9 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28730,6 +30368,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -28744,7 +30383,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28762,7 +30401,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28781,7 +30420,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28799,7 +30438,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28831,6 +30470,8 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28841,6 +30482,9 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28855,6 +30499,7 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -28869,10 +30514,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28892,10 +30537,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28926,6 +30571,8 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28936,6 +30583,9 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28950,6 +30600,7 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -28964,10 +30615,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -28985,10 +30636,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -29007,10 +30658,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -29028,10 +30679,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -29063,6 +30714,8 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29073,6 +30726,9 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29087,6 +30743,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -29100,7 +30757,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29119,7 +30776,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29150,6 +30807,8 @@ static void lts_aga_fm2_n0_p8_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29160,6 +30819,9 @@ static void lts_aga_fm2_n0_p8_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29174,6 +30836,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -29187,7 +30850,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29204,7 +30867,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29222,7 +30885,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29239,7 +30902,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29271,6 +30934,8 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29281,6 +30946,9 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29295,6 +30963,7 @@ static void lts_aga_fm2_n1_p8_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -29308,10 +30977,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29330,10 +30999,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29364,6 +31033,8 @@ static void lts_aga_fm2_n1_p8_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29374,6 +31045,9 @@ static void lts_aga_fm2_n1_p8_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29388,6 +31062,7 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -29401,10 +31076,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29421,10 +31096,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29442,10 +31117,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29462,10 +31137,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29497,6 +31172,8 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29507,6 +31184,9 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29521,6 +31201,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -29539,7 +31220,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29563,7 +31244,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29594,6 +31275,8 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29604,6 +31287,9 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29618,6 +31304,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -29636,7 +31323,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29658,7 +31345,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29681,7 +31368,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29703,7 +31390,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29735,6 +31422,8 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29745,6 +31434,9 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29759,6 +31451,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -29777,10 +31470,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29804,10 +31497,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29838,6 +31531,8 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29848,6 +31543,9 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29862,6 +31560,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -29880,10 +31579,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29905,10 +31604,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29931,10 +31630,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29956,10 +31655,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29991,6 +31690,8 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30001,6 +31702,9 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30031,6 +31735,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -30044,7 +31749,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30060,7 +31765,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30078,7 +31783,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30094,7 +31799,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30124,6 +31829,8 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30134,6 +31841,9 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30148,6 +31858,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -30161,7 +31872,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30178,7 +31889,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30196,7 +31907,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30213,7 +31924,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30245,6 +31956,8 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30255,6 +31968,9 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30269,6 +31985,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -30282,10 +31999,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30301,10 +32018,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30322,10 +32039,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30341,10 +32058,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30374,6 +32091,8 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30384,6 +32103,9 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30398,6 +32120,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -30411,10 +32134,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30431,10 +32154,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30452,10 +32175,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30472,10 +32195,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30507,6 +32230,8 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30517,6 +32242,9 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30547,6 +32275,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -30561,7 +32290,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -30589,7 +32318,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -30640,6 +32369,8 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30650,6 +32381,9 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30664,6 +32398,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -30678,7 +32413,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -30703,7 +32438,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -30722,7 +32457,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -30747,7 +32482,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -30793,6 +32528,8 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30803,6 +32540,9 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30817,6 +32557,7 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -30831,10 +32572,10 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -30862,10 +32603,10 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -30916,6 +32657,8 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30926,6 +32669,9 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30940,6 +32686,7 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -30954,10 +32701,10 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -30982,10 +32729,10 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31004,10 +32751,10 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31032,10 +32779,10 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31081,6 +32828,8 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31091,6 +32840,9 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31105,6 +32857,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -31124,7 +32877,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31157,7 +32910,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31208,6 +32961,8 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31218,6 +32973,9 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31232,6 +32990,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -31251,7 +33010,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31281,7 +33040,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31305,7 +33064,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31335,7 +33094,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31381,6 +33140,8 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31391,6 +33152,9 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31405,6 +33169,7 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -31424,10 +33189,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31460,10 +33225,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31514,6 +33279,8 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31524,6 +33291,9 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31538,6 +33308,7 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -31557,10 +33328,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31590,10 +33361,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31617,10 +33388,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31650,10 +33421,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -31699,6 +33470,8 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31709,6 +33482,9 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31771,6 +33547,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -31785,7 +33562,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -31813,7 +33590,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -31864,6 +33641,8 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31874,6 +33653,9 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31888,6 +33670,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -31902,7 +33685,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -31927,7 +33710,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -31946,7 +33729,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -31971,7 +33754,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32017,6 +33800,8 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32027,6 +33812,9 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32041,6 +33829,7 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -32055,10 +33844,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32086,10 +33875,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32140,6 +33929,8 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32150,6 +33941,9 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32164,6 +33958,7 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -32178,10 +33973,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32206,10 +34001,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32228,10 +34023,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32256,10 +34051,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32305,6 +34100,8 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32315,6 +34112,9 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32329,6 +34129,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -32348,7 +34149,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32381,7 +34182,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32432,6 +34233,8 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32442,6 +34245,9 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32456,6 +34262,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -32475,7 +34282,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32505,7 +34312,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32529,7 +34336,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32559,7 +34366,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32605,6 +34412,8 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32615,6 +34424,9 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32629,6 +34441,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -32648,10 +34461,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32684,10 +34497,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32738,6 +34551,8 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32748,6 +34563,9 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32762,6 +34580,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -32781,10 +34600,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32814,10 +34633,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32841,10 +34660,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32874,10 +34693,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -32923,6 +34742,8 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32933,6 +34754,9 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32995,6 +34819,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -33009,7 +34834,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33037,7 +34862,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33088,6 +34913,8 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33098,6 +34925,9 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33112,6 +34942,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -33126,7 +34957,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33151,7 +34982,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33170,7 +35001,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33195,7 +35026,7 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33241,6 +35072,8 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33251,6 +35084,9 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33265,6 +35101,7 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -33279,10 +35116,10 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33310,10 +35147,10 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33364,6 +35201,8 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33374,6 +35213,9 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33388,6 +35230,7 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -33402,10 +35245,10 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33430,10 +35273,10 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33452,10 +35295,10 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33480,10 +35323,10 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33529,6 +35372,8 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33539,6 +35384,9 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33553,6 +35401,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -33572,7 +35421,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33605,7 +35454,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33656,6 +35505,8 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33666,6 +35517,9 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33680,6 +35534,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -33699,7 +35554,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33729,7 +35584,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33753,7 +35608,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33783,7 +35638,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33829,6 +35684,8 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33839,6 +35696,9 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33853,6 +35713,7 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -33872,10 +35733,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33908,10 +35769,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -33962,6 +35823,8 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -33972,6 +35835,9 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -33986,6 +35852,7 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -34005,10 +35872,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34038,10 +35905,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34065,10 +35932,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34098,10 +35965,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34147,6 +36014,8 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34157,6 +36026,9 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34171,6 +36043,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -34191,7 +36064,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34225,7 +36098,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34276,6 +36149,8 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34286,6 +36161,9 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34300,6 +36178,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -34320,7 +36199,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34351,7 +36230,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34376,7 +36255,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34407,7 +36286,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34453,6 +36332,8 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34463,6 +36344,9 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34477,6 +36361,7 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -34497,10 +36382,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34534,10 +36419,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34588,6 +36473,8 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34598,6 +36485,9 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34612,6 +36502,7 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -34632,10 +36523,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34666,10 +36557,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34694,10 +36585,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34728,10 +36619,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34777,6 +36668,8 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34787,6 +36680,9 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34801,6 +36697,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -34815,7 +36712,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34839,7 +36736,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34858,7 +36755,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34882,7 +36779,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34924,6 +36821,8 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -34934,6 +36833,9 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -34948,6 +36850,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -34962,7 +36865,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -34987,7 +36890,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35006,7 +36909,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35031,7 +36934,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35077,6 +36980,8 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35087,6 +36992,9 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35101,6 +37009,7 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -35115,10 +37024,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35142,10 +37051,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35164,10 +37073,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35191,10 +37100,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35236,6 +37145,8 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35246,6 +37157,9 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35260,6 +37174,7 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -35274,10 +37189,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35302,10 +37217,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35324,10 +37239,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35352,10 +37267,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35401,6 +37316,8 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35411,6 +37328,9 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35425,6 +37345,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -35440,7 +37361,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35469,7 +37390,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35520,6 +37441,8 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35530,6 +37453,9 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35544,6 +37470,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -35559,7 +37486,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35585,7 +37512,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35605,7 +37532,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35631,7 +37558,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35677,6 +37604,8 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35687,6 +37616,9 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35701,6 +37633,7 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -35716,10 +37649,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35748,10 +37681,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35802,6 +37735,8 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35812,6 +37747,9 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35826,6 +37764,7 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -35841,10 +37780,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35870,10 +37809,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35893,10 +37832,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35922,10 +37861,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -35971,6 +37910,8 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -35981,6 +37922,9 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -35995,6 +37939,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -36009,7 +37954,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36037,7 +37982,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36088,6 +38033,8 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -36098,6 +38045,9 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -36112,6 +38062,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -36126,7 +38077,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36151,7 +38102,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36170,7 +38121,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36195,7 +38146,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36241,6 +38192,8 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -36251,6 +38204,9 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -36265,6 +38221,7 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -36279,10 +38236,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36310,10 +38267,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36364,6 +38321,8 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -36374,6 +38333,9 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -36388,6 +38350,7 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -36402,10 +38365,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36430,10 +38393,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36452,10 +38415,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36480,10 +38443,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36529,6 +38492,8 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -36539,6 +38504,9 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -36553,6 +38521,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -36572,7 +38541,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36605,7 +38574,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36656,6 +38625,8 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -36666,6 +38637,9 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -36680,6 +38654,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -36699,7 +38674,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36729,7 +38704,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36753,7 +38728,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36783,7 +38758,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36829,6 +38804,8 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -36839,6 +38816,9 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -36853,6 +38833,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -36872,10 +38853,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36908,10 +38889,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -36962,6 +38943,8 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -36972,6 +38955,9 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -36986,6 +38972,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -37005,10 +38992,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37038,10 +39025,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37065,10 +39052,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37098,10 +39085,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37147,6 +39134,8 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -37157,6 +39146,9 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -37187,6 +39179,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -37201,7 +39194,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37225,7 +39218,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37244,7 +39237,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37268,7 +39261,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37310,6 +39303,8 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -37320,6 +39315,9 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -37334,6 +39332,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -37348,7 +39347,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37373,7 +39372,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37392,7 +39391,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37417,7 +39416,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37463,6 +39462,8 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -37473,6 +39474,9 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -37487,6 +39491,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -37501,10 +39506,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37528,10 +39533,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37550,10 +39555,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37577,10 +39582,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37622,6 +39627,8 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -37632,6 +39639,9 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -37646,6 +39656,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -37660,10 +39671,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37688,10 +39699,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37710,10 +39721,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37738,10 +39749,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -37787,6 +39798,8 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -37797,6 +39810,9 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -37827,6 +39843,7 @@ static void lts_aga_fm2_n0_p2_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -37845,7 +39862,7 @@ static void lts_aga_fm2_n0_p2_ilores_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -37869,7 +39886,7 @@ static void lts_aga_fm2_n0_p2_ilores_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -37893,7 +39910,7 @@ static void lts_aga_fm2_n0_p2_ilores_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -37917,7 +39934,7 @@ static void lts_aga_fm2_n0_p2_ilores_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -37966,6 +39983,8 @@ static void lts_aga_fm2_n0_p2_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -37976,6 +39995,9 @@ static void lts_aga_fm2_n0_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -37994,6 +40016,7 @@ static void lts_aga_fm2_n1_p2_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -38018,12 +40041,12 @@ static void lts_aga_fm2_n1_p2_ilores_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -38053,12 +40076,12 @@ static void lts_aga_fm2_n1_p2_ilores_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -38088,12 +40111,12 @@ static void lts_aga_fm2_n1_p2_ilores_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -38123,12 +40146,12 @@ static void lts_aga_fm2_n1_p2_ilores_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -38177,6 +40200,8 @@ static void lts_aga_fm2_n1_p2_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -38187,6 +40212,9 @@ static void lts_aga_fm2_n1_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -38205,6 +40233,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -38228,7 +40257,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -38257,7 +40286,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -38286,7 +40315,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -38315,7 +40344,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -38364,6 +40393,8 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -38374,6 +40405,9 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -38392,6 +40426,7 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -38421,12 +40456,12 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -38461,12 +40496,12 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -38501,12 +40536,12 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -38541,12 +40576,12 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -38595,6 +40630,8 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -38605,6 +40642,9 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -38671,6 +40711,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -38689,7 +40730,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -38713,7 +40754,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -38737,7 +40778,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -38761,7 +40802,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -38810,6 +40851,8 @@ static void lts_aga_fm2_n0_p4_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -38820,6 +40863,9 @@ static void lts_aga_fm2_n0_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -38838,6 +40884,7 @@ static void lts_aga_fm2_n1_p4_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -38862,12 +40909,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -38897,12 +40944,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -38932,12 +40979,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -38967,12 +41014,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -39021,6 +41068,8 @@ static void lts_aga_fm2_n1_p4_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -39031,6 +41080,9 @@ static void lts_aga_fm2_n1_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -39049,6 +41101,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -39072,7 +41125,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -39101,7 +41154,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -39130,7 +41183,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -39159,7 +41212,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -39208,6 +41261,8 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -39218,6 +41273,9 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -39236,6 +41294,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -39265,12 +41324,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -39305,12 +41364,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -39345,12 +41404,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -39385,12 +41444,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -39439,6 +41498,8 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -39449,6 +41510,9 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -39515,6 +41579,7 @@ static void lts_aga_fm2_n0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -39533,7 +41598,7 @@ static void lts_aga_fm2_n0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -39557,7 +41622,7 @@ static void lts_aga_fm2_n0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -39581,7 +41646,7 @@ static void lts_aga_fm2_n0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -39605,7 +41670,7 @@ static void lts_aga_fm2_n0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -39654,6 +41719,8 @@ static void lts_aga_fm2_n0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -39664,6 +41731,9 @@ static void lts_aga_fm2_n0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -39682,6 +41752,7 @@ static void lts_aga_fm2_n1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -39706,12 +41777,12 @@ static void lts_aga_fm2_n1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -39741,12 +41812,12 @@ static void lts_aga_fm2_n1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -39776,12 +41847,12 @@ static void lts_aga_fm2_n1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -39811,12 +41882,12 @@ static void lts_aga_fm2_n1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -39865,6 +41936,8 @@ static void lts_aga_fm2_n1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -39875,6 +41948,9 @@ static void lts_aga_fm2_n1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -39893,6 +41969,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -39916,7 +41993,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -39945,7 +42022,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -39974,7 +42051,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -40003,7 +42080,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -40052,6 +42129,8 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -40062,6 +42141,9 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -40080,6 +42162,7 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -40109,12 +42192,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -40149,12 +42232,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -40189,12 +42272,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -40229,12 +42312,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -40283,6 +42366,8 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -40293,6 +42378,9 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -40311,6 +42399,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -40335,7 +42424,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -40365,7 +42454,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -40395,7 +42484,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -40425,7 +42514,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -40474,6 +42563,8 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -40484,6 +42575,9 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -40502,6 +42596,7 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -40532,12 +42627,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -40573,12 +42668,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -40614,12 +42709,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -40655,12 +42750,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -40709,6 +42804,8 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -40719,6 +42816,9 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -40737,6 +42837,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -40755,7 +42856,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -40779,7 +42880,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -40803,7 +42904,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -40827,7 +42928,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -40876,6 +42977,8 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -40886,6 +42989,9 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -40904,6 +43010,7 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -40928,12 +43035,12 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -40963,12 +43070,12 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -40998,12 +43105,12 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -41033,12 +43140,12 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -41087,6 +43194,8 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -41097,6 +43206,9 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -41115,6 +43227,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -41134,7 +43247,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -41159,7 +43272,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -41184,7 +43297,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -41209,7 +43322,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -41258,6 +43371,8 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -41268,6 +43383,9 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -41286,6 +43404,7 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -41311,12 +43430,12 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -41347,12 +43466,12 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -41383,12 +43502,12 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -41419,12 +43538,12 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -41473,6 +43592,8 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -41483,6 +43604,9 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -41501,6 +43625,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -41519,7 +43644,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -41543,7 +43668,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -41567,7 +43692,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -41591,7 +43716,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -41640,6 +43765,8 @@ static void lts_aga_fm2_n0_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -41650,6 +43777,9 @@ static void lts_aga_fm2_n0_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -41668,6 +43798,7 @@ static void lts_aga_fm2_n1_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -41692,12 +43823,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -41727,12 +43858,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -41762,12 +43893,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -41797,12 +43928,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -41851,6 +43982,8 @@ static void lts_aga_fm2_n1_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -41861,6 +43994,9 @@ static void lts_aga_fm2_n1_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -41879,6 +44015,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -41902,7 +44039,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -41931,7 +44068,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -41960,7 +44097,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -41989,7 +44126,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -42038,6 +44175,8 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -42048,6 +44187,9 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -42066,6 +44208,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -42095,12 +44238,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -42135,12 +44278,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -42175,12 +44318,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -42215,12 +44358,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -42269,6 +44412,8 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -42279,6 +44424,9 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -42313,6 +44461,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -42331,7 +44480,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -42355,7 +44504,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -42379,7 +44528,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -42403,7 +44552,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -42452,6 +44601,8 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -42462,6 +44613,9 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -42480,6 +44634,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -42504,12 +44659,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -42539,12 +44694,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -42574,12 +44729,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -42609,12 +44764,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -42663,6 +44818,8 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -42673,6 +44830,9 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -42707,6 +44867,7 @@ static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -42726,7 +44887,7 @@ static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -42759,7 +44920,7 @@ static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -42792,7 +44953,7 @@ static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -42825,7 +44986,7 @@ static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -42906,6 +45067,8 @@ static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -42916,6 +45079,9 @@ static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -42934,6 +45100,7 @@ static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -42959,12 +45126,12 @@ static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -43003,12 +45170,12 @@ static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -43047,12 +45214,12 @@ static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -43091,12 +45258,12 @@ static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -43177,6 +45344,8 @@ static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -43187,6 +45356,9 @@ static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -43205,6 +45377,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -43229,7 +45402,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -43267,7 +45440,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -43305,7 +45478,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -43343,7 +45516,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -43424,6 +45597,8 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -43434,6 +45609,9 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -43452,6 +45630,7 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -43482,12 +45661,12 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -43531,12 +45710,12 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -43580,12 +45759,12 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -43629,12 +45808,12 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -43715,6 +45894,8 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -43725,6 +45906,9 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -43791,6 +45975,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -43810,7 +45995,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -43843,7 +46028,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -43876,7 +46061,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -43909,7 +46094,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -43990,6 +46175,8 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -44000,6 +46187,9 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -44018,6 +46208,7 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -44043,12 +46234,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -44087,12 +46278,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -44131,12 +46322,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -44175,12 +46366,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -44261,6 +46452,8 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -44271,6 +46464,9 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -44289,6 +46485,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -44313,7 +46510,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -44351,7 +46548,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -44389,7 +46586,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -44427,7 +46624,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -44508,6 +46705,8 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -44518,6 +46717,9 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -44536,6 +46738,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -44566,12 +46769,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -44615,12 +46818,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -44664,12 +46867,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -44713,12 +46916,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -44799,6 +47002,8 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -44809,6 +47014,9 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -44875,6 +47083,7 @@ static void lts_aga_fm2_n0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -44894,7 +47103,7 @@ static void lts_aga_fm2_n0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -44927,7 +47136,7 @@ static void lts_aga_fm2_n0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -44960,7 +47169,7 @@ static void lts_aga_fm2_n0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -44993,7 +47202,7 @@ static void lts_aga_fm2_n0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -45074,6 +47283,8 @@ static void lts_aga_fm2_n0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -45084,6 +47295,9 @@ static void lts_aga_fm2_n0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -45102,6 +47316,7 @@ static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -45127,12 +47342,12 @@ static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -45171,12 +47386,12 @@ static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -45215,12 +47430,12 @@ static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -45259,12 +47474,12 @@ static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -45345,6 +47560,8 @@ static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -45355,6 +47572,9 @@ static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -45373,6 +47593,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -45397,7 +47618,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -45435,7 +47656,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -45473,7 +47694,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -45511,7 +47732,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -45592,6 +47813,8 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -45602,6 +47825,9 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -45620,6 +47846,7 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -45650,12 +47877,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -45699,12 +47926,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -45748,12 +47975,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -45797,12 +48024,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -45883,6 +48110,8 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -45893,6 +48122,9 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -45911,6 +48143,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -45936,7 +48169,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -45975,7 +48208,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -46014,7 +48247,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -46053,7 +48286,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -46134,6 +48367,8 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -46144,6 +48379,9 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -46162,6 +48400,7 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -46193,12 +48432,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -46243,12 +48482,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -46293,12 +48532,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -46343,12 +48582,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -46429,6 +48668,8 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -46439,6 +48680,9 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -46457,6 +48701,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -46476,7 +48721,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -46509,7 +48754,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -46542,7 +48787,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -46575,7 +48820,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -46656,6 +48901,8 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -46666,6 +48913,9 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -46684,6 +48934,7 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -46709,12 +48960,12 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -46753,12 +49004,12 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -46797,12 +49048,12 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -46841,12 +49092,12 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -46927,6 +49178,8 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -46937,6 +49190,9 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -46955,6 +49211,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -46975,7 +49232,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -47009,7 +49266,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -47043,7 +49300,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -47077,7 +49334,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -47158,6 +49415,8 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -47168,6 +49427,9 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -47186,6 +49448,7 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -47212,12 +49475,12 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -47257,12 +49520,12 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -47302,12 +49565,12 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -47347,12 +49610,12 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -47433,6 +49696,8 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -47443,6 +49708,9 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -47461,6 +49729,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -47480,7 +49749,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -47513,7 +49782,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -47546,7 +49815,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -47579,7 +49848,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -47660,6 +49929,8 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -47670,6 +49941,9 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -47688,6 +49962,7 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -47713,12 +49988,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -47757,12 +50032,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -47801,12 +50076,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -47845,12 +50120,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -47931,6 +50206,8 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -47941,6 +50218,9 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -47959,6 +50239,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -47983,7 +50264,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -48021,7 +50302,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -48059,7 +50340,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -48097,7 +50378,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -48178,6 +50459,8 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -48188,6 +50471,9 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -48206,6 +50492,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -48236,12 +50523,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -48285,12 +50572,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -48334,12 +50621,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -48383,12 +50670,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -48469,6 +50756,8 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -48479,6 +50768,9 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -48513,6 +50805,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -48532,7 +50825,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -48565,7 +50858,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -48598,7 +50891,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -48631,7 +50924,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -48712,6 +51005,8 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -48722,6 +51017,9 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -48740,6 +51038,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -48765,12 +51064,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -48809,12 +51108,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -48853,12 +51152,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -48897,12 +51196,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -48983,6 +51282,8 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -48993,6 +51294,9 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -49027,6 +51331,7 @@ static void lts_aga_fm2_n0_p2_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -49045,7 +51350,7 @@ static void lts_aga_fm2_n0_p2_ihires_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -49069,7 +51374,7 @@ static void lts_aga_fm2_n0_p2_ihires_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -49093,7 +51398,7 @@ static void lts_aga_fm2_n0_p2_ihires_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -49117,7 +51422,7 @@ static void lts_aga_fm2_n0_p2_ihires_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -49166,6 +51471,8 @@ static void lts_aga_fm2_n0_p2_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -49176,6 +51483,9 @@ static void lts_aga_fm2_n0_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -49194,6 +51504,7 @@ static void lts_aga_fm2_n1_p2_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -49218,12 +51529,12 @@ static void lts_aga_fm2_n1_p2_ihires_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -49253,12 +51564,12 @@ static void lts_aga_fm2_n1_p2_ihires_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -49288,12 +51599,12 @@ static void lts_aga_fm2_n1_p2_ihires_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -49323,12 +51634,12 @@ static void lts_aga_fm2_n1_p2_ihires_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -49377,6 +51688,8 @@ static void lts_aga_fm2_n1_p2_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -49387,6 +51700,9 @@ static void lts_aga_fm2_n1_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -49405,6 +51721,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -49428,7 +51745,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -49457,7 +51774,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -49486,7 +51803,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -49515,7 +51832,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -49564,6 +51881,8 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -49574,6 +51893,9 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -49592,6 +51914,7 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -49621,12 +51944,12 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -49661,12 +51984,12 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -49701,12 +52024,12 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -49741,12 +52064,12 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -49795,6 +52118,8 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -49805,6 +52130,9 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -49871,6 +52199,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -49889,7 +52218,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -49913,7 +52242,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -49937,7 +52266,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -49961,7 +52290,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -50010,6 +52339,8 @@ static void lts_aga_fm2_n0_p4_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -50020,6 +52351,9 @@ static void lts_aga_fm2_n0_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -50038,6 +52372,7 @@ static void lts_aga_fm2_n1_p4_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -50062,12 +52397,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -50097,12 +52432,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -50132,12 +52467,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -50167,12 +52502,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -50221,6 +52556,8 @@ static void lts_aga_fm2_n1_p4_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -50231,6 +52568,9 @@ static void lts_aga_fm2_n1_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -50249,6 +52589,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -50272,7 +52613,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -50301,7 +52642,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -50330,7 +52671,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -50359,7 +52700,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -50408,6 +52749,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -50418,6 +52761,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -50436,6 +52782,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -50465,12 +52812,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -50505,12 +52852,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -50545,12 +52892,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -50585,12 +52932,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -50639,6 +52986,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -50649,6 +52998,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -50715,6 +53067,7 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -50733,7 +53086,7 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -50757,7 +53110,7 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -50781,7 +53134,7 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -50805,7 +53158,7 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -50854,6 +53207,8 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -50864,6 +53219,9 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -50882,6 +53240,7 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -50906,12 +53265,12 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -50941,12 +53300,12 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -50976,12 +53335,12 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -51011,12 +53370,12 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -51065,6 +53424,8 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -51075,6 +53436,9 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -51093,6 +53457,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -51116,7 +53481,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -51145,7 +53510,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -51174,7 +53539,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -51203,7 +53568,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -51252,6 +53617,8 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -51262,6 +53629,9 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -51280,6 +53650,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -51309,12 +53680,12 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -51349,12 +53720,12 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -51389,12 +53760,12 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -51429,12 +53800,12 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -51483,6 +53854,8 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -51493,6 +53866,9 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -51511,6 +53887,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -51535,7 +53912,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -51565,7 +53942,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -51595,7 +53972,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -51625,7 +54002,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -51674,6 +54051,8 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -51684,6 +54063,9 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -51702,6 +54084,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -51732,12 +54115,12 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -51773,12 +54156,12 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -51814,12 +54197,12 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -51855,12 +54238,12 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -51909,6 +54292,8 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -51919,6 +54304,9 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -51937,6 +54325,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -51955,7 +54344,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -51979,7 +54368,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -52003,7 +54392,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -52027,7 +54416,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -52076,6 +54465,8 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -52086,6 +54477,9 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -52104,6 +54498,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -52128,12 +54523,12 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -52163,12 +54558,12 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -52198,12 +54593,12 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -52233,12 +54628,12 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -52287,6 +54682,8 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -52297,6 +54694,9 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -52315,6 +54715,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -52334,7 +54735,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -52359,7 +54760,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -52384,7 +54785,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -52409,7 +54810,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -52458,6 +54859,8 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -52468,6 +54871,9 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -52486,6 +54892,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -52511,12 +54918,12 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -52547,12 +54954,12 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -52583,12 +54990,12 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -52619,12 +55026,12 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -52673,6 +55080,8 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -52683,6 +55092,9 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -52701,6 +55113,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -52719,7 +55132,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -52743,7 +55156,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -52767,7 +55180,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -52791,7 +55204,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -52840,6 +55253,8 @@ static void lts_aga_fm2_n0_p8_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -52850,6 +55265,9 @@ static void lts_aga_fm2_n0_p8_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -52868,6 +55286,7 @@ static void lts_aga_fm2_n1_p8_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -52892,12 +55311,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -52927,12 +55346,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -52962,12 +55381,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -52997,12 +55416,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -53051,6 +55470,8 @@ static void lts_aga_fm2_n1_p8_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -53061,6 +55482,9 @@ static void lts_aga_fm2_n1_p8_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -53079,6 +55503,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -53102,7 +55527,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -53131,7 +55556,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -53160,7 +55585,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -53189,7 +55614,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -53238,6 +55663,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -53248,6 +55675,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -53266,6 +55696,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -53295,12 +55726,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -53335,12 +55766,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -53375,12 +55806,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -53415,12 +55846,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -53469,6 +55900,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -53479,6 +55912,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -53513,6 +55949,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -53531,7 +55968,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -53555,7 +55992,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -53579,7 +56016,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -53603,7 +56040,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -53652,6 +56089,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -53662,6 +56101,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -53680,6 +56122,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -53704,12 +56147,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -53739,12 +56182,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -53774,12 +56217,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -53809,12 +56252,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -53863,6 +56306,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -53873,6 +56318,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -53907,6 +56355,7 @@ static void lts_aga_fm2_n0_p2_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -53926,7 +56375,7 @@ static void lts_aga_fm2_n0_p2_ihires_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -53959,7 +56408,7 @@ static void lts_aga_fm2_n0_p2_ihires_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -53992,7 +56441,7 @@ static void lts_aga_fm2_n0_p2_ihires_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -54025,7 +56474,7 @@ static void lts_aga_fm2_n0_p2_ihires_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -54106,6 +56555,8 @@ static void lts_aga_fm2_n0_p2_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -54116,6 +56567,9 @@ static void lts_aga_fm2_n0_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -54134,6 +56588,7 @@ static void lts_aga_fm2_n1_p2_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -54159,12 +56614,12 @@ static void lts_aga_fm2_n1_p2_ihires_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -54203,12 +56658,12 @@ static void lts_aga_fm2_n1_p2_ihires_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -54247,12 +56702,12 @@ static void lts_aga_fm2_n1_p2_ihires_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -54291,12 +56746,12 @@ static void lts_aga_fm2_n1_p2_ihires_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -54377,6 +56832,8 @@ static void lts_aga_fm2_n1_p2_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -54387,6 +56844,9 @@ static void lts_aga_fm2_n1_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -54405,6 +56865,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -54429,7 +56890,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -54467,7 +56928,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -54505,7 +56966,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -54543,7 +57004,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres_spr(void)
                                shiftbpl2_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
@@ -54624,6 +57085,8 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -54634,6 +57097,9 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -54652,6 +57118,7 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -54682,12 +57149,12 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -54731,12 +57198,12 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -54780,12 +57247,12 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -54829,12 +57296,12 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres_spr(void)
                                shiftbpl2o_64();
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl2_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl2_64();
@@ -54915,6 +57382,8 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -54925,6 +57394,9 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -54991,6 +57463,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -55010,7 +57483,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -55043,7 +57516,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -55076,7 +57549,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -55109,7 +57582,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -55190,6 +57663,8 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -55200,6 +57675,9 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -55218,6 +57696,7 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -55243,12 +57722,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -55287,12 +57766,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -55331,12 +57810,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -55375,12 +57854,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -55461,6 +57940,8 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -55471,6 +57952,9 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -55489,6 +57973,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -55513,7 +57998,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -55551,7 +58036,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -55589,7 +58074,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -55627,7 +58112,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -55708,6 +58193,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -55718,6 +58205,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -55736,6 +58226,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -55766,12 +58257,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -55815,12 +58306,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -55864,12 +58355,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -55913,12 +58404,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -55999,6 +58490,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -56009,6 +58502,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -56075,6 +58571,7 @@ static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -56094,7 +58591,7 @@ static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -56127,7 +58624,7 @@ static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -56160,7 +58657,7 @@ static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -56193,7 +58690,7 @@ static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -56274,6 +58771,8 @@ static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -56284,6 +58783,9 @@ static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -56302,6 +58804,7 @@ static void lts_aga_fm2_n1_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -56327,12 +58830,12 @@ static void lts_aga_fm2_n1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -56371,12 +58874,12 @@ static void lts_aga_fm2_n1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -56415,12 +58918,12 @@ static void lts_aga_fm2_n1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -56459,12 +58962,12 @@ static void lts_aga_fm2_n1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -56545,6 +59048,8 @@ static void lts_aga_fm2_n1_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -56555,6 +59060,9 @@ static void lts_aga_fm2_n1_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -56573,6 +59081,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -56597,7 +59106,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -56635,7 +59144,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -56673,7 +59182,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -56711,7 +59220,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -56792,6 +59301,8 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -56802,6 +59313,9 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -56820,6 +59334,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -56850,12 +59365,12 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -56899,12 +59414,12 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -56948,12 +59463,12 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -56997,12 +59512,12 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -57083,6 +59598,8 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -57093,6 +59610,9 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -57111,6 +59631,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -57136,7 +59657,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -57175,7 +59696,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -57214,7 +59735,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -57253,7 +59774,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -57334,6 +59855,8 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -57344,6 +59867,9 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -57362,6 +59888,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -57393,12 +59920,12 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -57443,12 +59970,12 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -57493,12 +60020,12 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -57543,12 +60070,12 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -57629,6 +60156,8 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -57639,6 +60168,9 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -57657,6 +60189,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -57676,7 +60209,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -57709,7 +60242,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -57742,7 +60275,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -57775,7 +60308,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -57856,6 +60389,8 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -57866,6 +60401,9 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -57884,6 +60422,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -57909,12 +60448,12 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -57953,12 +60492,12 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -57997,12 +60536,12 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -58041,12 +60580,12 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -58127,6 +60666,8 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -58137,6 +60678,9 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -58155,6 +60699,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -58175,7 +60720,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -58209,7 +60754,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -58243,7 +60788,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -58277,7 +60822,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void)
                                shiftbpl6_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
@@ -58358,6 +60903,8 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -58368,6 +60915,9 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -58386,6 +60936,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -58412,12 +60963,12 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -58457,12 +61008,12 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -58502,12 +61053,12 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -58547,12 +61098,12 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void)
                                shiftbpl6o_64();
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl6_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl6_64();
@@ -58633,6 +61184,8 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -58643,6 +61196,9 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -58661,6 +61217,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -58680,7 +61237,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -58713,7 +61270,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -58746,7 +61303,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -58779,7 +61336,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -58860,6 +61417,8 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -58870,6 +61429,9 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -58888,6 +61450,7 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -58913,12 +61476,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -58957,12 +61520,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -59001,12 +61564,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -59045,12 +61608,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -59131,6 +61694,8 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -59141,6 +61706,9 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -59159,6 +61727,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -59183,7 +61752,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -59221,7 +61790,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -59259,7 +61828,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -59297,7 +61866,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -59378,6 +61947,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -59388,6 +61959,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -59406,6 +61980,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -59436,12 +62011,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -59485,12 +62060,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -59534,12 +62109,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -59583,12 +62158,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -59669,6 +62244,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -59679,6 +62256,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -59713,6 +62293,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -59732,7 +62313,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -59765,7 +62346,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -59798,7 +62379,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -59831,7 +62412,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -59912,6 +62493,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -59922,6 +62505,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -59940,6 +62526,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -59965,12 +62552,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -60009,12 +62596,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -60053,12 +62640,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -60097,12 +62684,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -60183,6 +62770,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -60193,6 +62782,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -60227,6 +62819,7 @@ static void lts_aga_fm2_n0_p2_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -60240,7 +62833,7 @@ static void lts_aga_fm2_n0_p2_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60258,7 +62851,7 @@ static void lts_aga_fm2_n0_p2_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60276,7 +62869,7 @@ static void lts_aga_fm2_n0_p2_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60294,7 +62887,7 @@ static void lts_aga_fm2_n0_p2_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60342,6 +62935,8 @@ static void lts_aga_fm2_n0_p2_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -60352,6 +62947,9 @@ static void lts_aga_fm2_n0_p2_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -60370,6 +62968,7 @@ static void lts_aga_fm2_n1_p2_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -60383,10 +62982,10 @@ static void lts_aga_fm2_n1_p2_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60404,10 +63003,10 @@ static void lts_aga_fm2_n1_p2_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60425,10 +63024,10 @@ static void lts_aga_fm2_n1_p2_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60446,10 +63045,10 @@ static void lts_aga_fm2_n1_p2_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60497,6 +63096,8 @@ static void lts_aga_fm2_n1_p2_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -60507,6 +63108,9 @@ static void lts_aga_fm2_n1_p2_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -60525,6 +63129,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -60543,7 +63148,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60566,7 +63171,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60589,7 +63194,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60612,7 +63217,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60660,6 +63265,8 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -60670,6 +63277,9 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -60688,6 +63298,7 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -60706,10 +63317,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60732,10 +63343,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60758,10 +63369,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60784,10 +63395,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -60835,6 +63446,8 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -60845,6 +63458,9 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -60911,6 +63527,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -60924,7 +63541,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -60942,7 +63559,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -60960,7 +63577,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -60978,7 +63595,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -61026,6 +63643,8 @@ static void lts_aga_fm2_n0_p4_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -61036,6 +63655,9 @@ static void lts_aga_fm2_n0_p4_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -61054,6 +63676,7 @@ static void lts_aga_fm2_n1_p4_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -61067,10 +63690,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -61088,10 +63711,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -61109,10 +63732,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -61130,10 +63753,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -61181,6 +63804,8 @@ static void lts_aga_fm2_n1_p4_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -61191,6 +63816,9 @@ static void lts_aga_fm2_n1_p4_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -61209,6 +63837,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -61227,7 +63856,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -61250,7 +63879,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -61273,7 +63902,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -61296,7 +63925,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -61344,6 +63973,8 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -61354,6 +63985,9 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -61372,6 +64006,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -61390,10 +64025,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -61416,10 +64051,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -61442,10 +64077,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -61468,10 +64103,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -61519,6 +64154,8 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -61529,6 +64166,9 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -61595,6 +64235,7 @@ static void lts_aga_fm2_n0_p6_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -61608,7 +64249,7 @@ static void lts_aga_fm2_n0_p6_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -61626,7 +64267,7 @@ static void lts_aga_fm2_n0_p6_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -61644,7 +64285,7 @@ static void lts_aga_fm2_n0_p6_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -61662,7 +64303,7 @@ static void lts_aga_fm2_n0_p6_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -61710,6 +64351,8 @@ static void lts_aga_fm2_n0_p6_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -61720,6 +64363,9 @@ static void lts_aga_fm2_n0_p6_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -61738,6 +64384,7 @@ static void lts_aga_fm2_n1_p6_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -61751,10 +64398,10 @@ static void lts_aga_fm2_n1_p6_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -61772,10 +64419,10 @@ static void lts_aga_fm2_n1_p6_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -61793,10 +64440,10 @@ static void lts_aga_fm2_n1_p6_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -61814,10 +64461,10 @@ static void lts_aga_fm2_n1_p6_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -61865,6 +64512,8 @@ static void lts_aga_fm2_n1_p6_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -61875,6 +64524,9 @@ static void lts_aga_fm2_n1_p6_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -61893,6 +64545,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -61911,7 +64564,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -61934,7 +64587,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -61957,7 +64610,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -61980,7 +64633,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62028,6 +64681,8 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -62038,6 +64693,9 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -62056,6 +64714,7 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -62074,10 +64733,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62100,10 +64759,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62126,10 +64785,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62152,10 +64811,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62203,6 +64862,8 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -62213,6 +64874,9 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -62231,6 +64895,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -62250,7 +64915,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62274,7 +64939,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62298,7 +64963,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62322,7 +64987,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62370,6 +65035,8 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -62380,6 +65047,9 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -62398,6 +65068,7 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -62417,10 +65088,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62444,10 +65115,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62471,10 +65142,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62498,10 +65169,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62549,6 +65220,8 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -62559,6 +65232,9 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -62577,6 +65253,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -62590,7 +65267,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62608,7 +65285,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62626,7 +65303,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62644,7 +65321,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62692,6 +65369,8 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -62702,6 +65381,9 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -62720,6 +65402,7 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -62733,10 +65416,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62754,10 +65437,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62775,10 +65458,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62796,10 +65479,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62847,6 +65530,8 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -62857,6 +65542,9 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -62875,6 +65563,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -62889,7 +65578,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62908,7 +65597,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62927,7 +65616,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62946,7 +65635,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -62994,6 +65683,8 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -63004,6 +65695,9 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -63022,6 +65716,7 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -63036,10 +65731,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -63058,10 +65753,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -63080,10 +65775,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -63102,10 +65797,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -63153,6 +65848,8 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -63163,6 +65860,9 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -63181,6 +65881,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -63194,7 +65895,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63212,7 +65913,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63230,7 +65931,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63248,7 +65949,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63296,6 +65997,8 @@ static void lts_aga_fm2_n0_p8_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -63306,6 +66009,9 @@ static void lts_aga_fm2_n0_p8_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -63324,6 +66030,7 @@ static void lts_aga_fm2_n1_p8_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -63337,10 +66044,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63358,10 +66065,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63379,10 +66086,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63400,10 +66107,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63451,6 +66158,8 @@ static void lts_aga_fm2_n1_p8_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -63461,6 +66170,9 @@ static void lts_aga_fm2_n1_p8_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -63479,6 +66191,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -63497,7 +66210,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63520,7 +66233,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63543,7 +66256,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63566,7 +66279,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63614,6 +66327,8 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -63624,6 +66339,9 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -63642,6 +66360,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -63660,10 +66379,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63686,10 +66405,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63712,10 +66431,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63738,10 +66457,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63789,6 +66508,8 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -63799,6 +66520,9 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -63833,6 +66557,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -63846,7 +66571,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63864,7 +66589,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63882,7 +66607,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63900,7 +66625,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -63948,6 +66673,8 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -63958,6 +66685,9 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -63976,6 +66706,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u32 dpix_val0 = BLANK_COLOR;
@@ -63989,10 +66720,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -64010,10 +66741,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -64031,10 +66762,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -64052,10 +66783,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -64103,6 +66834,8 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -64113,6 +66846,9 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -64147,6 +66883,7 @@ static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -64161,7 +66898,7 @@ static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64188,7 +66925,7 @@ static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64215,7 +66952,7 @@ static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64242,7 +66979,7 @@ static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64322,6 +67059,8 @@ static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -64332,6 +67071,9 @@ static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -64350,6 +67092,7 @@ static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -64364,10 +67107,10 @@ static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64394,10 +67137,10 @@ static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64424,10 +67167,10 @@ static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64454,10 +67197,10 @@ static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64537,6 +67280,8 @@ static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -64547,6 +67292,9 @@ static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -64565,6 +67313,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -64584,7 +67333,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64616,7 +67365,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64648,7 +67397,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64680,7 +67429,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64760,6 +67509,8 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -64770,6 +67521,9 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -64788,6 +67542,7 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -64807,10 +67562,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64842,10 +67597,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64877,10 +67632,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64912,10 +67667,10 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl2_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl2e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl2o_64();
                        }
                        loaded_pix = getbpl2_64();
@@ -64995,6 +67750,8 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -65005,6 +67762,9 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -65071,6 +67831,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -65085,7 +67846,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65112,7 +67873,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65139,7 +67900,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65166,7 +67927,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65246,6 +68007,8 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -65256,6 +68019,9 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -65274,6 +68040,7 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -65288,10 +68055,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65318,10 +68085,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65348,10 +68115,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65378,10 +68145,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65461,6 +68228,8 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -65471,6 +68240,9 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -65489,6 +68261,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -65508,7 +68281,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65540,7 +68313,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65572,7 +68345,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65604,7 +68377,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65684,6 +68457,8 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -65694,6 +68469,9 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -65712,6 +68490,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -65731,10 +68510,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65766,10 +68545,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65801,10 +68580,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65836,10 +68615,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -65919,6 +68698,8 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -65929,6 +68710,9 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -65995,6 +68779,7 @@ static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -66009,7 +68794,7 @@ static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66036,7 +68821,7 @@ static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66063,7 +68848,7 @@ static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66090,7 +68875,7 @@ static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66170,6 +68955,8 @@ static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -66180,6 +68967,9 @@ static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -66198,6 +68988,7 @@ static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -66212,10 +69003,10 @@ static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66242,10 +69033,10 @@ static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66272,10 +69063,10 @@ static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66302,10 +69093,10 @@ static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66385,6 +69176,8 @@ static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -66395,6 +69188,9 @@ static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -66413,6 +69209,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -66432,7 +69229,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66464,7 +69261,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66496,7 +69293,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66528,7 +69325,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66608,6 +69405,8 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -66618,6 +69417,9 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -66636,6 +69438,7 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -66655,10 +69458,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66690,10 +69493,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66725,10 +69528,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66760,10 +69563,10 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66843,6 +69646,8 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -66853,6 +69658,9 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -66871,6 +69679,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -66891,7 +69700,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66924,7 +69733,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66957,7 +69766,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -66990,7 +69799,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67070,6 +69879,8 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -67080,6 +69891,9 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -67098,6 +69912,7 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -67118,10 +69933,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67154,10 +69969,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67190,10 +70005,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67226,10 +70041,10 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67309,6 +70124,8 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -67319,6 +70136,9 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -67337,6 +70157,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -67351,7 +70172,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67378,7 +70199,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67405,7 +70226,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67432,7 +70253,7 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67512,6 +70333,8 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -67522,6 +70345,9 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -67540,6 +70366,7 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -67554,10 +70381,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67584,10 +70411,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67614,10 +70441,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67644,10 +70471,10 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67727,6 +70554,8 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -67737,6 +70566,9 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -67755,6 +70587,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -67770,7 +70603,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67798,7 +70631,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67826,7 +70659,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67854,7 +70687,7 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -67934,6 +70767,8 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -67944,6 +70779,9 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -67962,6 +70800,7 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -67977,10 +70816,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -68008,10 +70847,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -68039,10 +70878,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -68070,10 +70909,10 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl6_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl6e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl6o_64();
                        }
                        loaded_pix = getbpl6_64();
@@ -68153,6 +70992,8 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -68163,6 +71004,9 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -68181,6 +71025,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -68195,7 +71040,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68222,7 +71067,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68249,7 +71094,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68276,7 +71121,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68356,6 +71201,8 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -68366,6 +71213,9 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -68384,6 +71234,7 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -68398,10 +71249,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68428,10 +71279,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68458,10 +71309,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68488,10 +71339,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68571,6 +71422,8 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -68581,6 +71434,9 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -68599,6 +71455,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -68618,7 +71475,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68650,7 +71507,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68682,7 +71539,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68714,7 +71571,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68794,6 +71651,8 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -68804,6 +71663,9 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -68822,6 +71684,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -68841,10 +71704,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68876,10 +71739,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68911,10 +71774,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -68946,10 +71809,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -69029,6 +71892,8 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -69039,6 +71904,9 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -69073,6 +71941,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -69087,7 +71956,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -69114,7 +71983,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -69141,7 +72010,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -69168,7 +72037,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -69248,6 +72117,8 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -69258,6 +72129,9 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -69276,6 +72150,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -69290,10 +72165,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -69320,10 +72195,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -69350,10 +72225,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -69380,10 +72255,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -69463,6 +72338,8 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -69473,6 +72350,9 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
index b9ceae82a145a3d6ab31df507ad353ea28434e6d..30b489af6f3dfdbcc7edb2f89ab45b3ac0fd1a2c 100644 (file)
@@ -15,6 +15,7 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -31,7 +32,7 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -54,6 +55,8 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -64,6 +67,9 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -82,6 +88,7 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -98,10 +105,10 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -124,6 +131,8 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -134,6 +143,9 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -152,6 +164,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -173,7 +186,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -196,6 +209,8 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -206,6 +221,9 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -224,6 +242,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -245,10 +264,10 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -271,6 +290,8 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -281,6 +302,9 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -347,6 +371,7 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -363,7 +388,7 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -386,6 +411,8 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -396,6 +423,9 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -414,6 +444,7 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -430,10 +461,10 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -456,6 +487,8 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -466,6 +499,9 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -484,6 +520,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -505,7 +542,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -528,6 +565,8 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -538,6 +577,9 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -556,6 +598,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -577,10 +620,10 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -603,6 +646,8 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -613,6 +658,9 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -647,6 +695,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -663,7 +712,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -686,6 +735,8 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -696,6 +747,9 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -714,6 +768,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -730,10 +785,10 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -756,6 +811,8 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -766,6 +823,9 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -800,6 +860,7 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -817,7 +878,7 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -856,6 +917,8 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -866,6 +929,9 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -884,6 +950,7 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -901,10 +968,10 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -943,6 +1010,8 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -953,6 +1022,9 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -971,6 +1043,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -993,7 +1066,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -1032,6 +1105,8 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1042,6 +1117,9 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1060,6 +1138,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1082,10 +1161,10 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -1124,6 +1203,8 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1134,6 +1215,9 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1200,6 +1284,7 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1217,7 +1302,7 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -1256,6 +1341,8 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1266,6 +1353,9 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1284,6 +1374,7 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1301,10 +1392,10 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -1343,6 +1434,8 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1353,6 +1446,9 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1371,6 +1467,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1393,7 +1490,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -1432,6 +1529,8 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1442,6 +1541,9 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1460,6 +1562,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1482,10 +1585,10 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -1524,6 +1627,8 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1534,6 +1639,9 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1568,6 +1676,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1585,7 +1694,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -1624,6 +1733,8 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1634,6 +1745,9 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1652,6 +1766,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -1669,10 +1784,10 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -1711,6 +1826,8 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1721,6 +1838,9 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1755,6 +1875,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -1771,7 +1892,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -1795,6 +1916,8 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1805,6 +1928,9 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1819,6 +1945,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -1835,7 +1962,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -1855,7 +1982,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -1880,6 +2007,8 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1890,6 +2019,9 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1904,6 +2036,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -1920,10 +2053,10 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -1947,6 +2080,8 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1957,6 +2092,9 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1971,6 +2109,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -1987,10 +2126,10 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -2010,10 +2149,10 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -2038,6 +2177,8 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2048,6 +2189,9 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2062,6 +2206,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2083,7 +2228,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -2107,6 +2252,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2117,6 +2264,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2131,6 +2281,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2152,7 +2303,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -2177,7 +2328,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -2202,6 +2353,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2212,6 +2365,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2226,6 +2382,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2247,10 +2404,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -2274,6 +2431,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2284,6 +2443,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2298,6 +2460,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2319,10 +2482,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -2347,10 +2510,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -2375,6 +2538,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2385,6 +2550,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2447,6 +2615,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2463,7 +2632,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -2487,6 +2656,8 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2497,6 +2668,9 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2511,6 +2685,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2527,7 +2702,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -2547,7 +2722,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -2572,6 +2747,8 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2582,6 +2759,9 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2596,6 +2776,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2612,10 +2793,10 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -2639,6 +2820,8 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2649,6 +2832,9 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2663,6 +2849,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2679,10 +2866,10 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -2702,10 +2889,10 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -2730,6 +2917,8 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2740,6 +2929,9 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2754,6 +2946,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2775,7 +2968,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -2799,6 +2992,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2809,6 +3004,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2823,6 +3021,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2844,7 +3043,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -2869,7 +3068,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -2894,6 +3093,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2904,6 +3105,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2918,6 +3122,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -2939,10 +3144,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -2966,6 +3171,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2976,6 +3183,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2990,6 +3200,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -3011,10 +3222,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3039,10 +3250,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3067,6 +3278,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3077,6 +3290,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3107,6 +3323,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -3123,7 +3340,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3140,7 +3357,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3163,6 +3380,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3173,6 +3392,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3187,6 +3409,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -3203,7 +3426,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3223,7 +3446,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3248,6 +3471,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3258,6 +3483,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3272,6 +3500,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -3288,10 +3517,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3308,10 +3537,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3334,6 +3563,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3344,6 +3575,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3358,6 +3592,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -3374,10 +3609,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3397,10 +3632,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -3425,6 +3660,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3435,6 +3672,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3465,6 +3705,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3482,7 +3723,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -3522,6 +3763,8 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3532,6 +3775,9 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3546,6 +3792,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3563,7 +3810,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -3591,7 +3838,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -3625,6 +3872,8 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3635,6 +3884,9 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3649,6 +3901,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3666,10 +3919,10 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -3709,6 +3962,8 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3719,6 +3974,9 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3733,6 +3991,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3750,10 +4009,10 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -3781,10 +4040,10 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -3818,6 +4077,8 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3828,6 +4089,9 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3842,6 +4106,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3864,7 +4129,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -3904,6 +4169,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3914,6 +4181,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3928,6 +4198,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -3950,7 +4221,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -3983,7 +4254,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4017,6 +4288,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4027,6 +4300,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4041,6 +4317,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4063,10 +4340,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4106,6 +4383,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4116,6 +4395,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4130,6 +4412,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4152,10 +4435,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4188,10 +4471,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -4225,6 +4508,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4235,6 +4520,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4297,6 +4585,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4314,7 +4603,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -4354,6 +4643,8 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4364,6 +4655,9 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4378,6 +4672,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4395,7 +4690,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -4423,7 +4718,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -4457,6 +4752,8 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4467,6 +4764,9 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4481,6 +4781,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4498,10 +4799,10 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -4541,6 +4842,8 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4551,6 +4854,9 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4565,6 +4871,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4582,10 +4889,10 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -4613,10 +4920,10 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -4650,6 +4957,8 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4660,6 +4969,9 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4674,6 +4986,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4696,7 +5009,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -4736,6 +5049,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4746,6 +5061,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4760,6 +5078,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4782,7 +5101,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -4815,7 +5134,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -4849,6 +5168,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4859,6 +5180,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4873,6 +5197,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4895,10 +5220,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -4938,6 +5263,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4948,6 +5275,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4962,6 +5292,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -4984,10 +5315,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -5020,10 +5351,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -5057,6 +5388,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5067,6 +5400,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5097,6 +5433,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5114,7 +5451,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -5139,7 +5476,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -5170,6 +5507,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5180,6 +5519,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5194,6 +5536,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5211,7 +5554,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -5239,7 +5582,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -5273,6 +5616,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5283,6 +5628,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5297,6 +5645,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5314,10 +5663,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -5342,10 +5691,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -5376,6 +5725,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5386,6 +5737,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5400,6 +5754,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -5417,10 +5772,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -5448,10 +5803,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -5485,6 +5840,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5495,6 +5852,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5845,6 +6205,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -5866,7 +6227,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -5893,7 +6254,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -5928,6 +6289,8 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5938,6 +6301,9 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5956,6 +6322,7 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -5983,12 +6350,12 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -6021,12 +6388,12 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -6061,6 +6428,8 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6071,6 +6440,9 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6089,6 +6461,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6115,7 +6488,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -6147,7 +6520,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -6182,6 +6555,8 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6192,6 +6567,9 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6210,6 +6588,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6242,12 +6621,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -6285,12 +6664,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -6325,6 +6704,8 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6335,6 +6716,9 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6401,6 +6785,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6422,7 +6807,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -6449,7 +6834,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -6484,6 +6869,8 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6494,6 +6881,9 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6512,6 +6902,7 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6539,12 +6930,12 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -6577,12 +6968,12 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -6617,6 +7008,8 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6627,6 +7020,9 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6645,6 +7041,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6671,7 +7068,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -6703,7 +7100,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -6738,6 +7135,8 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6748,6 +7147,9 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6766,6 +7168,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6798,12 +7201,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -6841,12 +7244,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -6881,6 +7284,8 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6891,6 +7296,9 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6925,6 +7333,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -6946,7 +7355,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -6973,7 +7382,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -7008,6 +7417,8 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7018,6 +7429,9 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7036,6 +7450,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -7063,12 +7478,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -7101,12 +7516,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -7141,6 +7556,8 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7151,6 +7568,9 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7185,6 +7605,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7207,7 +7628,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -7243,7 +7664,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -7302,6 +7723,8 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7312,6 +7735,9 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7330,6 +7756,7 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7358,12 +7785,12 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -7405,12 +7832,12 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -7469,6 +7896,8 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7479,6 +7908,9 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7497,6 +7929,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7524,7 +7957,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -7565,7 +7998,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -7624,6 +8057,8 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7634,6 +8069,9 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7652,6 +8090,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7685,12 +8124,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -7737,12 +8176,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -7801,6 +8240,8 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7811,6 +8252,9 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7877,6 +8321,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -7899,7 +8344,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -7935,7 +8380,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -7994,6 +8439,8 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8004,6 +8451,9 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8022,6 +8472,7 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8050,12 +8501,12 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -8097,12 +8548,12 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -8161,6 +8612,8 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8171,6 +8624,9 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8189,6 +8645,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8216,7 +8673,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -8257,7 +8714,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -8316,6 +8773,8 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8326,6 +8785,9 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8344,6 +8806,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8377,12 +8840,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -8429,12 +8892,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -8493,6 +8956,8 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8503,6 +8968,9 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8537,6 +9005,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8559,7 +9028,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -8595,7 +9064,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -8654,6 +9123,8 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8664,6 +9135,9 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8682,6 +9156,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -8710,12 +9185,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -8757,12 +9232,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -8821,6 +9296,8 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8831,6 +9308,9 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8865,6 +9345,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -8881,7 +9362,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8902,7 +9383,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -8936,6 +9417,8 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8946,6 +9429,9 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8964,6 +9450,7 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -8980,10 +9467,10 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -9004,10 +9491,10 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -9041,6 +9528,8 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9051,6 +9540,9 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9069,6 +9561,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9090,7 +9583,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -9116,7 +9609,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -9150,6 +9643,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9160,6 +9655,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9178,6 +9676,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9199,10 +9698,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -9228,10 +9727,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -9265,6 +9764,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9275,6 +9776,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9341,6 +9845,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9357,7 +9862,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -9378,7 +9883,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -9412,6 +9917,8 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9422,6 +9929,9 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9440,6 +9950,7 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9456,10 +9967,10 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -9480,10 +9991,10 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -9517,6 +10028,8 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9527,6 +10040,9 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9545,6 +10061,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9566,7 +10083,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -9592,7 +10109,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -9626,6 +10143,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9636,6 +10155,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9654,6 +10176,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9675,10 +10198,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -9704,10 +10227,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -9741,6 +10264,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9751,6 +10276,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9785,6 +10313,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9801,7 +10330,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -9822,7 +10351,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -9856,6 +10385,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9866,6 +10397,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9884,6 +10418,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -9900,10 +10435,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -9924,10 +10459,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -9961,6 +10496,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9971,6 +10508,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10005,6 +10545,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10022,7 +10563,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -10052,7 +10593,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -10110,6 +10651,8 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10120,6 +10663,9 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10138,6 +10684,7 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10155,10 +10702,10 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -10188,10 +10735,10 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -10249,6 +10796,8 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10259,6 +10808,9 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10277,6 +10829,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10299,7 +10852,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -10334,7 +10887,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -10392,6 +10945,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10402,6 +10957,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10420,6 +10978,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10442,10 +11001,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -10480,10 +11039,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -10541,6 +11100,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10551,6 +11112,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10617,6 +11181,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10634,7 +11199,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -10664,7 +11229,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -10722,6 +11287,8 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10732,6 +11299,9 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10750,6 +11320,7 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10767,10 +11338,10 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -10800,10 +11371,10 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -10861,6 +11432,8 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10871,6 +11444,9 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10889,6 +11465,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -10911,7 +11488,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -10946,7 +11523,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11004,6 +11581,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11014,6 +11593,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11032,6 +11614,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11054,10 +11637,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11092,10 +11675,10 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11153,6 +11736,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11163,6 +11748,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11197,6 +11785,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11214,7 +11803,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11244,7 +11833,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11302,6 +11891,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11312,6 +11903,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11330,6 +11924,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -11347,10 +11942,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11380,10 +11975,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -11441,6 +12036,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11451,6 +12048,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11485,6 +12085,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -11501,7 +12102,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -11523,7 +12124,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -11558,6 +12159,8 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11568,6 +12171,9 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11582,6 +12188,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -11598,7 +12205,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -11618,7 +12225,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -11639,7 +12246,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -11659,7 +12266,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -11697,6 +12304,8 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11707,6 +12316,9 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11721,6 +12333,7 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -11737,10 +12350,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -11762,10 +12375,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -11800,6 +12413,8 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11810,6 +12425,9 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11824,6 +12442,7 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -11840,10 +12459,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -11863,10 +12482,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -11887,10 +12506,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -11910,10 +12529,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -11951,6 +12570,8 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11961,6 +12582,9 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11975,6 +12599,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -11996,7 +12621,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -12023,7 +12648,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -12058,6 +12683,8 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12068,6 +12695,9 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12082,6 +12712,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -12103,7 +12734,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -12128,7 +12759,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -12154,7 +12785,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -12179,7 +12810,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -12217,6 +12848,8 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12227,6 +12860,9 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12241,6 +12877,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -12262,10 +12899,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -12292,10 +12929,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -12330,6 +12967,8 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12340,6 +12979,9 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12354,6 +12996,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -12375,10 +13018,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -12403,10 +13046,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -12432,10 +13075,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -12460,10 +13103,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -12501,6 +13144,8 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12511,6 +13156,9 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12573,6 +13221,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -12589,7 +13238,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -12611,7 +13260,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -12646,6 +13295,8 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12656,6 +13307,9 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12670,6 +13324,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -12686,7 +13341,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -12706,7 +13361,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -12727,7 +13382,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -12747,7 +13402,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -12785,6 +13440,8 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12795,6 +13452,9 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12809,6 +13469,7 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -12825,10 +13486,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -12850,10 +13511,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -12888,6 +13549,8 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12898,6 +13561,9 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12912,6 +13578,7 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -12928,10 +13595,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -12951,10 +13618,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -12975,10 +13642,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -12998,10 +13665,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13039,6 +13706,8 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13049,6 +13718,9 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13063,6 +13735,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -13084,7 +13757,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13111,7 +13784,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13146,6 +13819,8 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13156,6 +13831,9 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13170,6 +13848,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -13191,7 +13870,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13216,7 +13895,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13242,7 +13921,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13267,7 +13946,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13305,6 +13984,8 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13315,6 +13996,9 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13329,6 +14013,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -13350,10 +14035,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13380,10 +14065,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13418,6 +14103,8 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13428,6 +14115,9 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13442,6 +14132,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -13463,10 +14154,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13491,10 +14182,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13520,10 +14211,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13548,10 +14239,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13589,6 +14280,8 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13599,6 +14292,9 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13629,6 +14325,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -13645,7 +14342,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13662,7 +14359,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13683,7 +14380,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13700,7 +14397,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13734,6 +14431,8 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13744,6 +14443,9 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13758,6 +14460,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -13774,7 +14477,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13794,7 +14497,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13815,7 +14518,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13835,7 +14538,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13873,6 +14576,8 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13883,6 +14588,9 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13897,6 +14605,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -13913,10 +14622,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13933,10 +14642,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13957,10 +14666,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -13977,10 +14686,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -14014,6 +14723,8 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14024,6 +14735,9 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14038,6 +14752,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -14054,10 +14769,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -14077,10 +14792,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -14101,10 +14816,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -14124,10 +14839,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -14165,6 +14880,8 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14175,6 +14892,9 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14205,6 +14925,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -14222,7 +14943,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14253,7 +14974,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14312,6 +15033,8 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14322,6 +15045,9 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14336,6 +15062,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -14353,7 +15080,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14381,7 +15108,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14403,7 +15130,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14431,7 +15158,7 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14487,6 +15214,8 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14497,6 +15226,9 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14511,6 +15243,7 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -14528,10 +15261,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14562,10 +15295,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14624,6 +15357,8 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14634,6 +15369,9 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14648,6 +15386,7 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -14665,10 +15404,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14696,10 +15435,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14721,10 +15460,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14752,10 +15491,10 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14811,6 +15550,8 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14821,6 +15562,9 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14835,6 +15579,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -14857,7 +15602,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14893,7 +15638,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -14952,6 +15697,8 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14962,6 +15709,9 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14976,6 +15726,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -14998,7 +15749,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -15031,7 +15782,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -15058,7 +15809,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -15091,7 +15842,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -15147,6 +15898,8 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15157,6 +15910,9 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15171,6 +15927,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15193,10 +15950,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -15232,10 +15989,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -15294,6 +16051,8 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15304,6 +16063,9 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15318,6 +16080,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15340,10 +16103,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -15376,10 +16139,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -15406,10 +16169,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -15442,10 +16205,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -15501,6 +16264,8 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15511,6 +16276,9 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15573,6 +16341,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15590,7 +16359,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -15621,7 +16390,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -15680,6 +16449,8 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15690,6 +16461,9 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15704,6 +16478,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15721,7 +16496,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -15749,7 +16524,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -15771,7 +16546,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -15799,7 +16574,7 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -15855,6 +16630,8 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15865,6 +16642,9 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15879,6 +16659,7 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -15896,10 +16677,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -15930,10 +16711,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -15992,6 +16773,8 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16002,6 +16785,9 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16016,6 +16802,7 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16033,10 +16820,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16064,10 +16851,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16089,10 +16876,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16120,10 +16907,10 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16179,6 +16966,8 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16189,6 +16978,9 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16203,6 +16995,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16225,7 +17018,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16261,7 +17054,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16320,6 +17113,8 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16330,6 +17125,9 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16344,6 +17142,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16366,7 +17165,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16399,7 +17198,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16426,7 +17225,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16459,7 +17258,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16515,6 +17314,8 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16525,6 +17326,9 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16539,6 +17343,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16561,10 +17366,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16600,10 +17405,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16662,6 +17467,8 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16672,6 +17479,9 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16686,6 +17496,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16708,10 +17519,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16744,10 +17555,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16774,10 +17585,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16810,10 +17621,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16869,6 +17680,8 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16879,6 +17692,9 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16909,6 +17725,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -16926,7 +17743,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16951,7 +17768,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16973,7 +17790,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -16998,7 +17815,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -17048,6 +17865,8 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17058,6 +17877,9 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17072,6 +17894,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17089,7 +17912,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -17117,7 +17940,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -17139,7 +17962,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -17167,7 +17990,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -17223,6 +18046,8 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17233,6 +18058,9 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17247,6 +18075,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17264,10 +18093,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -17292,10 +18121,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -17317,10 +18146,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -17345,10 +18174,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -17398,6 +18227,8 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17408,6 +18239,9 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17422,6 +18256,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -17439,10 +18274,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -17470,10 +18305,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -17495,10 +18330,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -17526,10 +18361,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -17585,6 +18420,8 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17595,6 +18432,9 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17625,6 +18465,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -17646,7 +18487,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -17673,7 +18514,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -17700,7 +18541,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -17727,7 +18568,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -17784,6 +18625,8 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17794,6 +18637,9 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17812,6 +18658,7 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -17839,12 +18686,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -17877,12 +18724,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -17915,12 +18762,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -17953,12 +18800,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -18015,6 +18862,8 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18025,6 +18874,9 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18043,6 +18895,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -18069,7 +18922,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -18101,7 +18954,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -18133,7 +18986,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -18165,7 +19018,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -18222,6 +19075,8 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18232,6 +19087,9 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18250,6 +19108,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -18282,12 +19141,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -18325,12 +19184,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -18368,12 +19227,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -18411,12 +19270,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -18473,6 +19332,8 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18483,6 +19344,9 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18549,6 +19413,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -18570,7 +19435,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -18597,7 +19462,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -18624,7 +19489,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -18651,7 +19516,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -18708,6 +19573,8 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18718,6 +19585,9 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18736,6 +19606,7 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -18763,12 +19634,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -18801,12 +19672,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -18839,12 +19710,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -18877,12 +19748,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -18939,6 +19810,8 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18949,6 +19822,9 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18967,6 +19843,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -18993,7 +19870,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -19025,7 +19902,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -19057,7 +19934,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -19089,7 +19966,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -19146,6 +20023,8 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19156,6 +20035,9 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19174,6 +20056,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -19206,12 +20089,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -19249,12 +20132,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -19292,12 +20175,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -19335,12 +20218,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -19397,6 +20280,8 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19407,6 +20292,9 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19441,6 +20329,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -19462,7 +20351,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -19489,7 +20378,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -19516,7 +20405,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -19543,7 +20432,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -19600,6 +20489,8 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19610,6 +20501,9 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19628,6 +20522,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -19655,12 +20550,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -19693,12 +20588,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -19731,12 +20626,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -19769,12 +20664,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -19831,6 +20726,8 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19841,6 +20738,9 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19875,6 +20775,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -19897,7 +20798,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -19933,7 +20834,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -19969,7 +20870,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -20005,7 +20906,7 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -20102,6 +21003,8 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20112,6 +21015,9 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20130,6 +21036,7 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -20158,12 +21065,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -20205,12 +21112,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -20252,12 +21159,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -20299,12 +21206,12 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -20401,6 +21308,8 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20411,6 +21320,9 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20429,6 +21341,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -20456,7 +21369,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -20497,7 +21410,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -20538,7 +21451,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -20579,7 +21492,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -20676,6 +21589,8 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20686,6 +21601,9 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20704,6 +21622,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -20737,12 +21656,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -20789,12 +21708,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -20841,12 +21760,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -20893,12 +21812,12 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -20995,6 +21914,8 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21005,6 +21926,9 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21071,6 +21995,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21093,7 +22018,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -21129,7 +22054,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -21165,7 +22090,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -21201,7 +22126,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -21298,6 +22223,8 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21308,6 +22235,9 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21326,6 +22256,7 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21354,12 +22285,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -21401,12 +22332,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -21448,12 +22379,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -21495,12 +22426,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -21597,6 +22528,8 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21607,6 +22540,9 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21625,6 +22561,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21652,7 +22589,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -21693,7 +22630,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -21734,7 +22671,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -21775,7 +22712,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -21872,6 +22809,8 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -21882,6 +22821,9 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -21900,6 +22842,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -21933,12 +22876,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -21985,12 +22928,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -22037,12 +22980,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -22089,12 +23032,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -22191,6 +23134,8 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22201,6 +23146,9 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22235,6 +23183,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22257,7 +23206,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -22293,7 +23242,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -22329,7 +23278,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -22365,7 +23314,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -22462,6 +23411,8 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22472,6 +23423,9 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22490,6 +23444,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -22518,12 +23473,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -22565,12 +23520,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -22612,12 +23567,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -22659,12 +23614,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 255) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -22761,6 +23716,8 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22771,6 +23728,9 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22805,6 +23765,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -22826,7 +23787,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -22853,7 +23814,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -22880,7 +23841,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -22907,7 +23868,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -22964,6 +23925,8 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -22974,6 +23937,9 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -22992,6 +23958,7 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -23019,12 +23986,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -23057,12 +24024,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -23095,12 +24062,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -23133,12 +24100,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -23195,6 +24162,8 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23205,6 +24174,9 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23223,6 +24195,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -23249,7 +24222,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -23281,7 +24254,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -23313,7 +24286,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -23345,7 +24318,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -23402,6 +24375,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23412,6 +24387,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23430,6 +24408,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -23462,12 +24441,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -23505,12 +24484,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -23548,12 +24527,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -23591,12 +24570,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -23653,6 +24632,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23663,6 +24644,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23729,6 +24713,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -23750,7 +24735,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -23777,7 +24762,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -23804,7 +24789,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -23831,7 +24816,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -23888,6 +24873,8 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -23898,6 +24885,9 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -23916,6 +24906,7 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -23943,12 +24934,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -23981,12 +24972,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -24019,12 +25010,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -24057,12 +25048,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -24119,6 +25110,8 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24129,6 +25122,9 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24147,6 +25143,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -24173,7 +25170,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -24205,7 +25202,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -24237,7 +25234,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -24269,7 +25266,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -24326,6 +25323,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24336,6 +25335,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24354,6 +25356,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -24386,12 +25389,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -24429,12 +25432,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -24472,12 +25475,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -24515,12 +25518,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -24577,6 +25580,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24587,6 +25592,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24621,6 +25629,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -24642,7 +25651,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -24669,7 +25678,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -24696,7 +25705,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -24723,7 +25732,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -24780,6 +25789,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -24790,6 +25801,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -24808,6 +25822,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -24835,12 +25850,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -24873,12 +25888,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -24911,12 +25926,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -24949,12 +25964,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -25011,6 +26026,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25021,6 +26038,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25055,6 +26075,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -25077,7 +26098,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -25113,7 +26134,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -25149,7 +26170,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -25185,7 +26206,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -25282,6 +26303,8 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25292,6 +26315,9 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25310,6 +26336,7 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -25338,12 +26365,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -25385,12 +26412,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -25432,12 +26459,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -25479,12 +26506,12 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -25581,6 +26608,8 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25591,6 +26620,9 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25609,6 +26641,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -25636,7 +26669,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -25677,7 +26710,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -25718,7 +26751,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -25759,7 +26792,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
@@ -25856,6 +26889,8 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -25866,6 +26901,9 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -25884,6 +26922,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -25917,12 +26956,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -25969,12 +27008,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -26021,12 +27060,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -26073,12 +27112,12 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void)
                                shiftbpl4o_64();
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl4_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl4_64();
@@ -26175,6 +27214,8 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26185,6 +27226,9 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26251,6 +27295,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -26273,7 +27318,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -26309,7 +27354,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -26345,7 +27390,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -26381,7 +27426,7 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -26478,6 +27523,8 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26488,6 +27535,9 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26506,6 +27556,7 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -26534,12 +27585,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -26581,12 +27632,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -26628,12 +27679,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -26675,12 +27726,12 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -26777,6 +27828,8 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -26787,6 +27840,9 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -26805,6 +27861,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -26832,7 +27889,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -26873,7 +27930,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -26914,7 +27971,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -26955,7 +28012,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -27052,6 +28109,8 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27062,6 +28121,9 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27080,6 +28142,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -27113,12 +28176,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -27165,12 +28228,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -27217,12 +28280,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -27269,12 +28332,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -27371,6 +28434,8 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27381,6 +28446,9 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27415,6 +28483,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -27437,7 +28506,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -27473,7 +28542,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -27509,7 +28578,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -27545,7 +28614,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
@@ -27642,6 +28711,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27652,6 +28723,9 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27670,6 +28744,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -27698,12 +28773,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -27745,12 +28820,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -27792,12 +28867,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -27839,12 +28914,12 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_genlock(void)
                                shiftbpl8o_64();
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[0] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                                bplshiftcnt[0] = 0;
                                loaded_pix = getbpl8_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 127) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                                bplshiftcnt[1] = 0;
                                loaded_pix = getbpl8_64();
@@ -27941,6 +29016,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -27951,6 +29028,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -27985,6 +29065,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -28001,7 +29082,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28022,7 +29103,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28043,7 +29124,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28064,7 +29145,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28120,6 +29201,8 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28130,6 +29213,9 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28148,6 +29234,7 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -28164,10 +29251,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28188,10 +29275,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28212,10 +29299,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28236,10 +29323,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28295,6 +29382,8 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28305,6 +29394,9 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28323,6 +29415,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -28344,7 +29437,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28370,7 +29463,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28396,7 +29489,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28422,7 +29515,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28478,6 +29571,8 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28488,6 +29583,9 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28506,6 +29604,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -28527,10 +29626,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28556,10 +29655,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28585,10 +29684,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28614,10 +29713,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -28673,6 +29772,8 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28683,6 +29784,9 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28749,6 +29853,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -28765,7 +29870,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -28786,7 +29891,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -28807,7 +29912,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -28828,7 +29933,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -28884,6 +29989,8 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -28894,6 +30001,9 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -28912,6 +30022,7 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -28928,10 +30039,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -28952,10 +30063,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -28976,10 +30087,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29000,10 +30111,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29059,6 +30170,8 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29069,6 +30182,9 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29087,6 +30203,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -29108,7 +30225,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29134,7 +30251,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29160,7 +30277,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29186,7 +30303,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29242,6 +30359,8 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29252,6 +30371,9 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29270,6 +30392,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -29291,10 +30414,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29320,10 +30443,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29349,10 +30472,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29378,10 +30501,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29437,6 +30560,8 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29447,6 +30572,9 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29481,6 +30609,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -29497,7 +30626,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29518,7 +30647,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29539,7 +30668,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29560,7 +30689,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29616,6 +30745,8 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29626,6 +30757,9 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29644,6 +30778,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        uae_u8 pix0 = 0;
                        uae_u8 gpix0 = 0xff;
@@ -29660,10 +30795,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29684,10 +30819,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29708,10 +30843,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29732,10 +30867,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -29791,6 +30926,8 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -29801,6 +30938,9 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -29835,6 +30975,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -29852,7 +30993,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -29882,7 +31023,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -29912,7 +31053,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -29942,7 +31083,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -30038,6 +31179,8 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30048,6 +31191,9 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30066,6 +31212,7 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -30083,10 +31230,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -30116,10 +31263,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -30149,10 +31296,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -30182,10 +31329,10 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -30281,6 +31428,8 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30291,6 +31440,9 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30309,6 +31461,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -30331,7 +31484,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -30366,7 +31519,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -30401,7 +31554,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -30436,7 +31589,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -30532,6 +31685,8 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30542,6 +31697,9 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30560,6 +31718,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -30582,10 +31741,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -30620,10 +31779,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -30658,10 +31817,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -30696,10 +31855,10 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl4_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl4e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl4o_64();
                        }
                        loaded_pix = getbpl4_64();
@@ -30795,6 +31954,8 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -30805,6 +31966,9 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -30871,6 +32035,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -30888,7 +32053,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30918,7 +32083,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30948,7 +32113,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -30978,7 +32143,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31074,6 +32239,8 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31084,6 +32251,9 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31102,6 +32272,7 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -31119,10 +32290,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31152,10 +32323,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31185,10 +32356,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31218,10 +32389,10 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31317,6 +32488,8 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31327,6 +32500,9 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31345,6 +32521,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -31367,7 +32544,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31402,7 +32579,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31437,7 +32614,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31472,7 +32649,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31568,6 +32745,8 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31578,6 +32757,9 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31596,6 +32778,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -31618,10 +32801,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31656,10 +32839,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31694,10 +32877,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31732,10 +32915,10 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31831,6 +33014,8 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -31841,6 +33026,9 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -31875,6 +33063,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -31892,7 +33081,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31922,7 +33111,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31952,7 +33141,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -31982,7 +33171,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -32078,6 +33267,8 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32088,6 +33279,9 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -32106,6 +33300,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void)
                        }
                        int cnt = denise_hcounter << 2;
                        int cnt_next = denise_hcounter_next << 2;
+                       int cmp = denise_hcounter_cmp << 2;
                        if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue;
                        matchsprites_aga(cnt + 0);
                        uae_u8 pix0 = 0;
@@ -32123,10 +33318,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix0;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 0) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -32156,10 +33351,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix1;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 1) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -32189,10 +33384,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix2;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 2) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -32222,10 +33417,10 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void)
                                last_bpl_pix = pix3;
                        }
                        shiftbpl8_64();
-                       if (bpldat_copy[0] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[0]) { 
+                       if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { 
                                copybpl8e_64();
                        }
-                       if (bpldat_copy[1] && ((cnt | 3) & 63) == bplcon1_shift_full_masked[1]) {
+                       if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) {
                                copybpl8o_64();
                        }
                        loaded_pix = getbpl8_64();
@@ -32321,6 +33516,8 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -32331,6 +33528,9 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
index 5b5495e71acac197cd1b6c5a5c0693bb52ffce92..988a354c0704d9688248c547161288218dcba0fd 100644 (file)
@@ -92,7 +92,7 @@ static void lts_ecs_shres_dhires(void)
                                shiftbpl2();
                                shiftbpl2();
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 3) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 3) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        internal_pixel_cnt += 4;
@@ -100,6 +100,8 @@ static void lts_ecs_shres_dhires(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -110,6 +112,9 @@ static void lts_ecs_shres_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -203,7 +208,7 @@ static void lts_ecs_shres_dhires_filtered(void)
                                shiftbpl2();
                                shiftbpl2();
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 3) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 3) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        internal_pixel_cnt += 4;
@@ -211,6 +216,8 @@ static void lts_ecs_shres_dhires_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -221,6 +228,9 @@ static void lts_ecs_shres_dhires_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -326,7 +336,7 @@ static void lts_ecs_shres_dshres(void)
                                shiftbpl2();
                                shiftbpl2();
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 3) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 3) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        internal_pixel_cnt += 4;
@@ -334,6 +344,8 @@ static void lts_ecs_shres_dshres(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -344,6 +356,9 @@ static void lts_ecs_shres_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -450,7 +465,7 @@ static void lts_ecs_shres_dhires_genlock(void)
                                shiftbpl2();
                                shiftbpl2();
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 3) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 3) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        internal_pixel_cnt += 4;
@@ -458,6 +473,8 @@ static void lts_ecs_shres_dhires_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -468,6 +485,9 @@ static void lts_ecs_shres_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -569,7 +589,7 @@ static void lts_ecs_shres_dhires_genlock_filtered(void)
                                shiftbpl2();
                                shiftbpl2();
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 3) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 3) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        internal_pixel_cnt += 4;
@@ -577,6 +597,8 @@ static void lts_ecs_shres_dhires_genlock_filtered(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -587,6 +609,9 @@ static void lts_ecs_shres_dhires_genlock_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -700,7 +725,7 @@ static void lts_ecs_shres_dshres_genlock(void)
                                shiftbpl2();
                                shiftbpl2();
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 3) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 3) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        internal_pixel_cnt += 4;
@@ -708,6 +733,8 @@ static void lts_ecs_shres_dshres_genlock(void)
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -718,6 +745,9 @@ static void lts_ecs_shres_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
index 9b2a7faffdae797fb82c7cd8f852ab704fa0bd5f..a585e9b1368d579ce121935976b3bc1af8a17152 100644 (file)
@@ -41,13 +41,15 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -58,6 +60,9 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -102,16 +107,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -122,6 +129,9 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -167,13 +177,15 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -184,6 +196,9 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -229,16 +244,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -249,6 +266,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -325,13 +345,15 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -342,6 +364,9 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -386,16 +411,18 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -406,6 +433,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -451,13 +481,15 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -468,6 +500,9 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -513,16 +548,18 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -533,6 +570,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -612,13 +652,15 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -629,6 +671,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -676,16 +721,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -696,6 +743,9 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -744,13 +794,15 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -761,6 +813,9 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -809,16 +864,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -829,6 +886,9 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -892,13 +952,15 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -909,6 +971,9 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -956,16 +1021,18 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -976,6 +1043,9 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1023,13 +1093,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1040,6 +1112,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1087,16 +1162,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1107,6 +1184,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1155,13 +1235,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1172,6 +1254,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1220,16 +1305,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1240,6 +1327,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1292,13 +1382,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1309,6 +1401,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1361,16 +1456,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1381,6 +1478,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1428,13 +1528,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1445,6 +1547,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1492,16 +1597,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1512,6 +1619,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1571,13 +1681,15 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1588,6 +1700,9 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1647,16 +1762,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1667,6 +1784,9 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1727,13 +1847,15 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1744,6 +1866,9 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1804,16 +1929,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1824,6 +1951,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1915,13 +2045,15 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1932,6 +2064,9 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1991,16 +2126,18 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2011,6 +2148,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2071,13 +2211,15 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2088,6 +2230,9 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2148,16 +2293,18 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2168,6 +2315,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2262,13 +2412,15 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2279,6 +2431,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2341,16 +2496,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2361,6 +2518,9 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2424,13 +2584,15 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2441,6 +2603,9 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2504,16 +2669,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2524,6 +2691,9 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2602,13 +2772,15 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2619,6 +2791,9 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2681,16 +2856,18 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2701,6 +2878,9 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2763,13 +2943,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2780,6 +2962,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2842,16 +3027,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2862,6 +3049,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2925,13 +3115,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2942,6 +3134,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3005,16 +3200,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3025,6 +3222,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3092,13 +3292,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3109,6 +3311,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3176,16 +3381,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3196,6 +3403,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3258,13 +3468,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3275,6 +3487,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3337,16 +3552,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3357,6 +3574,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3414,13 +3634,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3431,6 +3653,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3485,13 +3710,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3502,6 +3729,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3555,16 +3785,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3575,6 +3807,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3629,16 +3864,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3649,6 +3886,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3704,13 +3944,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3721,6 +3963,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3777,13 +4022,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3794,6 +4041,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3849,16 +4099,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3869,6 +4121,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3925,16 +4180,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3945,6 +4202,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4030,13 +4290,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4047,6 +4309,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4101,13 +4366,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4118,6 +4385,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4171,16 +4441,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4191,6 +4463,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4245,16 +4520,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4265,6 +4542,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4320,13 +4600,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4337,6 +4619,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4393,13 +4678,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4410,6 +4697,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4465,16 +4755,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4485,6 +4777,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4541,16 +4836,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4561,6 +4858,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4789,13 +5089,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4806,6 +5108,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4876,13 +5181,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4893,6 +5200,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4961,16 +5271,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4981,6 +5293,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5051,16 +5366,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5071,6 +5388,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5141,13 +5461,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5158,6 +5480,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5230,13 +5555,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5247,6 +5574,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5317,16 +5647,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5337,6 +5669,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5409,16 +5744,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5429,6 +5766,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5529,13 +5869,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5546,6 +5888,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5616,13 +5961,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5633,6 +5980,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5701,16 +6051,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5721,6 +6073,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5791,16 +6146,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5811,6 +6168,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5881,13 +6241,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5898,6 +6260,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5970,13 +6335,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5987,6 +6354,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6057,16 +6427,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6077,6 +6449,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6149,16 +6524,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6169,6 +6546,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6383,13 +6763,15 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6400,6 +6782,9 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6458,16 +6843,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6478,6 +6865,9 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6537,13 +6927,15 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6554,6 +6946,9 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6613,16 +7008,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6633,6 +7030,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6723,13 +7123,15 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6740,6 +7142,9 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6798,16 +7203,18 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6818,6 +7225,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6877,13 +7287,15 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6894,6 +7306,9 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6953,16 +7368,18 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6973,6 +7390,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7066,13 +7486,15 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7083,6 +7505,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7144,16 +7569,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7164,6 +7591,9 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7226,13 +7656,15 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7243,6 +7675,9 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7305,16 +7740,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7325,6 +7762,9 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7402,13 +7842,15 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7419,6 +7861,9 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7480,16 +7925,18 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7500,6 +7947,9 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7561,13 +8011,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7578,6 +8030,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7639,16 +8094,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7659,6 +8116,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7721,13 +8181,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7738,6 +8200,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7800,16 +8265,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7820,6 +8287,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7886,13 +8356,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7903,6 +8375,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7969,16 +8444,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7989,6 +8466,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8050,13 +8530,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8067,6 +8549,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8128,16 +8613,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8148,6 +8635,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8222,13 +8712,15 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8239,6 +8731,9 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8313,16 +8808,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8333,6 +8830,9 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8408,13 +8908,15 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8425,6 +8927,9 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8500,16 +9005,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8520,6 +9027,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8626,13 +9136,15 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8643,6 +9155,9 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8717,16 +9232,18 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8737,6 +9254,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8812,13 +9332,15 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8829,6 +9351,9 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8904,16 +9429,18 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8924,6 +9451,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9033,13 +9563,15 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9050,6 +9582,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9127,16 +9662,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9147,6 +9684,9 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9225,13 +9765,15 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9242,6 +9784,9 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9320,16 +9865,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9340,6 +9887,9 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9433,13 +9983,15 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9450,6 +10002,9 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9527,16 +10082,18 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9547,6 +10104,9 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9624,13 +10184,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9641,6 +10203,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9718,16 +10283,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9738,6 +10305,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9816,13 +10386,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9833,6 +10405,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9911,16 +10486,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9931,6 +10508,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10013,13 +10593,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10030,6 +10612,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10112,16 +10697,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10132,6 +10719,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10209,13 +10799,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10226,6 +10818,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10303,16 +10898,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10323,6 +10920,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10391,13 +10991,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10408,6 +11010,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10476,16 +11081,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10496,6 +11103,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10566,13 +11176,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10583,6 +11195,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10653,16 +11268,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10673,6 +11290,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10773,13 +11393,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10790,6 +11412,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10858,16 +11483,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10878,6 +11505,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10948,13 +11578,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10965,6 +11597,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11035,16 +11670,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11055,6 +11692,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11305,13 +11945,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11322,6 +11964,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11412,16 +12057,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11432,6 +12079,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11524,13 +12174,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11541,6 +12193,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11633,16 +12288,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11653,6 +12310,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11775,13 +12435,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11792,6 +12454,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11882,16 +12547,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11902,6 +12569,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11994,13 +12664,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12011,6 +12683,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12103,16 +12778,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12123,6 +12800,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12369,13 +13049,15 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12386,6 +13068,9 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12472,16 +13157,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12492,6 +13179,9 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12579,13 +13269,15 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12596,6 +13288,9 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12683,16 +13378,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12703,6 +13400,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12821,13 +13521,15 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12838,6 +13540,9 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12924,16 +13629,18 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12944,6 +13651,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13031,13 +13741,15 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13048,6 +13760,9 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13135,16 +13850,18 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13155,6 +13872,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13276,13 +13996,15 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13293,6 +14015,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13382,16 +14107,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13402,6 +14129,9 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13492,13 +14222,15 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13509,6 +14241,9 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13599,16 +14334,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13619,6 +14356,9 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13724,13 +14464,15 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13741,6 +14483,9 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13830,16 +14575,18 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13850,6 +14597,9 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13939,13 +14689,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13956,6 +14708,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14045,16 +14800,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14065,6 +14822,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14155,13 +14915,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14172,6 +14934,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14262,16 +15027,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14282,6 +15049,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14376,13 +15146,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14393,6 +15165,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14487,16 +15262,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14507,6 +15284,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14596,13 +15376,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14613,6 +15395,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14702,16 +15487,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14722,6 +15509,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14826,13 +15616,15 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14843,6 +15635,9 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14947,16 +15742,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14967,6 +15764,9 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15072,13 +15872,15 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15089,6 +15891,9 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15194,16 +15999,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15214,6 +16021,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15350,13 +16160,15 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15367,6 +16179,9 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15471,16 +16286,18 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15491,6 +16308,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15596,13 +16416,15 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15613,6 +16435,9 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15718,16 +16543,18 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15738,6 +16565,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15877,13 +16707,15 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15894,6 +16726,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16001,16 +16836,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16021,6 +16858,9 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16129,13 +16969,15 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16146,6 +16988,9 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16254,16 +17099,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16274,6 +17121,9 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16397,13 +17247,15 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16414,6 +17266,9 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16521,16 +17376,18 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16541,6 +17398,9 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16648,13 +17508,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16665,6 +17527,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16772,16 +17637,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16792,6 +17659,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16900,13 +17770,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16917,6 +17789,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17025,16 +17900,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17045,6 +17922,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17157,13 +18037,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17174,6 +18056,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17286,16 +18171,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17306,6 +18193,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17413,13 +18303,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17430,6 +18322,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17537,16 +18432,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17557,6 +18454,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17653,13 +18553,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17670,6 +18572,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17766,16 +18671,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17786,6 +18693,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17884,13 +18794,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17901,6 +18813,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17999,16 +18914,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18019,6 +18936,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18147,13 +19067,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18164,6 +19086,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18260,16 +19185,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18280,6 +19207,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18378,13 +19308,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18395,6 +19327,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18493,16 +19428,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18513,6 +19450,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18805,13 +19745,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18822,6 +19764,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18954,16 +19899,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18974,6 +19921,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19108,13 +20058,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19125,6 +20077,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19259,16 +20214,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19279,6 +20236,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19443,13 +20403,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19460,6 +20422,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19592,16 +20557,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19612,6 +20579,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19746,13 +20716,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19763,6 +20735,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19897,16 +20872,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19917,6 +20894,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
index 04812a4eb9212a7f3e87b2316d6ba58f0d1a5462..6b6a322b89b24b17683dc114767239725f5d101e 100644 (file)
@@ -48,13 +48,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -65,6 +67,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -116,16 +121,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -136,6 +143,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -188,13 +198,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -205,6 +217,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -257,16 +272,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -277,6 +294,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -333,13 +353,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -350,6 +372,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -406,16 +431,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -426,6 +453,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -477,13 +507,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -494,6 +526,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -545,16 +580,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -565,6 +602,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -633,13 +673,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -650,6 +692,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -718,16 +763,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -738,6 +785,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -807,13 +857,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -824,6 +876,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -893,16 +948,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -913,6 +970,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -986,13 +1046,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1003,6 +1065,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1076,16 +1141,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1096,6 +1163,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1164,13 +1234,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1181,6 +1253,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1249,16 +1324,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1269,6 +1346,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1333,13 +1413,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1350,6 +1432,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1412,13 +1497,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1429,6 +1516,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1489,16 +1579,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1509,6 +1601,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1571,16 +1666,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1591,6 +1688,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1653,13 +1753,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1670,6 +1772,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1734,13 +1839,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1751,6 +1858,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1813,16 +1923,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1833,6 +1945,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1897,16 +2012,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1917,6 +2034,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2026,13 +2146,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2043,6 +2165,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2123,13 +2248,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2140,6 +2267,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2217,16 +2347,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2237,6 +2369,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2317,16 +2452,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2337,6 +2474,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2416,13 +2556,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2433,6 +2575,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2515,13 +2660,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2532,6 +2679,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2611,16 +2761,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2631,6 +2783,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2713,16 +2868,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = gpix0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2733,6 +2890,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2828,13 +2988,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2845,6 +3007,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2912,16 +3077,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2932,6 +3099,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3000,13 +3170,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3017,6 +3189,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3085,16 +3260,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3105,6 +3282,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3177,13 +3357,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3194,6 +3376,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3266,16 +3451,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3286,6 +3473,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3353,13 +3543,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3370,6 +3562,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3437,16 +3632,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3457,6 +3654,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3542,13 +3742,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3559,6 +3761,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3644,16 +3849,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3664,6 +3871,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3750,13 +3960,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3767,6 +3979,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3853,16 +4068,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3873,6 +4090,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3963,13 +4183,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3980,6 +4202,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4070,16 +4295,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4090,6 +4317,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4175,13 +4405,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4192,6 +4424,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4277,16 +4512,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4297,6 +4534,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4373,13 +4613,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4390,6 +4632,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4466,16 +4711,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4486,6 +4733,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4564,13 +4814,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4581,6 +4833,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4659,16 +4914,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4679,6 +4936,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4813,13 +5073,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4830,6 +5092,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4932,16 +5197,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4952,6 +5219,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5056,13 +5326,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5073,6 +5345,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5177,16 +5452,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = gpix1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5197,6 +5474,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5328,13 +5608,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5345,6 +5627,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5444,16 +5729,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5464,6 +5751,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5564,13 +5854,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5581,6 +5873,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5681,16 +5976,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5701,6 +5998,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5805,13 +6105,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5822,6 +6124,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5926,16 +6231,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5946,6 +6253,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6045,13 +6355,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6062,6 +6374,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6161,16 +6476,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6181,6 +6498,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6300,13 +6620,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6317,6 +6639,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6436,16 +6761,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6456,6 +6783,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6576,13 +6906,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6593,6 +6925,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6713,16 +7048,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6733,6 +7070,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6857,13 +7197,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6874,6 +7216,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6998,16 +7343,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7018,6 +7365,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7137,13 +7487,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7154,6 +7506,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7273,16 +7628,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7293,6 +7650,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7401,13 +7761,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7418,6 +7780,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7526,16 +7891,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7546,6 +7913,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7656,13 +8026,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7673,6 +8045,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7783,16 +8158,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7803,6 +8180,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7987,13 +8367,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8004,6 +8386,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8156,16 +8541,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8176,6 +8563,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8330,13 +8720,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8347,6 +8739,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8501,16 +8896,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = gpix3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8521,6 +8918,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
index fde7978fb6638986163022a12358338d51f419d0..6e24d7c972fcfdb36e2256256bc228871658d3fc 100644 (file)
@@ -42,13 +42,15 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -59,6 +61,9 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -104,16 +109,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -124,6 +131,9 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -170,13 +180,15 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -187,6 +199,9 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -233,16 +248,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -253,6 +270,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -330,13 +350,15 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -347,6 +369,9 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -392,16 +417,18 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -412,6 +439,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -458,13 +488,15 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -475,6 +507,9 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -521,16 +556,18 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -541,6 +578,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -621,13 +661,15 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -638,6 +680,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -686,16 +731,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -706,6 +753,9 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -755,13 +805,15 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -772,6 +824,9 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -821,16 +876,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -841,6 +898,9 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -905,13 +965,15 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -922,6 +984,9 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -970,16 +1035,18 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -990,6 +1057,9 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1038,13 +1108,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1055,6 +1127,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1103,16 +1178,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1123,6 +1200,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1172,13 +1252,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1189,6 +1271,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1238,16 +1323,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1258,6 +1345,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1311,13 +1401,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1328,6 +1420,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1381,16 +1476,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1401,6 +1498,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1449,13 +1549,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1466,6 +1568,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1514,16 +1619,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1534,6 +1641,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1594,13 +1704,15 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1611,6 +1723,9 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1671,16 +1786,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1691,6 +1808,9 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1752,13 +1872,15 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1769,6 +1891,9 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1830,16 +1955,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1850,6 +1977,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1942,13 +2072,15 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1959,6 +2091,9 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2019,16 +2154,18 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2039,6 +2176,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2100,13 +2240,15 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2117,6 +2259,9 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2178,16 +2323,18 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2198,6 +2345,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2293,13 +2443,15 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2310,6 +2462,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2373,16 +2528,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2393,6 +2550,9 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2457,13 +2617,15 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2474,6 +2636,9 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2538,16 +2703,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2558,6 +2725,9 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2637,13 +2807,15 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2654,6 +2826,9 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2717,16 +2892,18 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2737,6 +2914,9 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2800,13 +2980,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2817,6 +2999,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2880,16 +3065,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2900,6 +3087,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2964,13 +3154,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2981,6 +3173,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3045,16 +3240,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3065,6 +3262,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3133,13 +3333,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3150,6 +3352,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3218,16 +3423,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3238,6 +3445,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3301,13 +3511,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3318,6 +3530,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3381,16 +3596,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3401,6 +3618,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3459,13 +3679,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3476,6 +3698,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3531,13 +3756,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3548,6 +3775,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3602,16 +3832,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3622,6 +3854,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3677,16 +3912,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3697,6 +3934,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3753,13 +3993,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3770,6 +4012,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3827,13 +4072,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3844,6 +4091,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3900,16 +4150,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3920,6 +4172,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3977,16 +4232,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3997,6 +4254,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4083,13 +4343,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4100,6 +4362,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4155,13 +4420,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4172,6 +4439,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4226,16 +4496,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4246,6 +4518,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4301,16 +4576,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4321,6 +4598,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4377,13 +4657,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4394,6 +4676,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4451,13 +4736,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4468,6 +4755,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4524,16 +4814,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4544,6 +4836,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4601,16 +4896,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4621,6 +4918,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4850,13 +5150,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4867,6 +5169,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4938,13 +5243,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4955,6 +5262,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5024,16 +5334,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5044,6 +5356,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5115,16 +5430,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5135,6 +5452,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5206,13 +5526,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5223,6 +5545,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5296,13 +5621,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5313,6 +5640,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5384,16 +5714,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5404,6 +5736,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5477,16 +5812,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5497,6 +5834,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5598,13 +5938,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5615,6 +5957,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5686,13 +6031,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5703,6 +6050,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5772,16 +6122,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5792,6 +6144,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5863,16 +6218,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5883,6 +6240,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5954,13 +6314,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5971,6 +6333,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6044,13 +6409,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6061,6 +6428,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6132,16 +6502,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6152,6 +6524,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6225,16 +6600,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered(void)
                                *buf1++ = t0;
                                *buf2++ = t0;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6245,6 +6622,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6461,13 +6841,15 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6478,6 +6860,9 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6538,16 +6923,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6558,6 +6945,9 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6619,13 +7009,15 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6636,6 +7028,9 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6697,16 +7092,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6717,6 +7114,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6809,13 +7209,15 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6826,6 +7228,9 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6886,16 +7291,18 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6906,6 +7313,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6967,13 +7377,15 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6984,6 +7396,9 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7045,16 +7460,18 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7065,6 +7482,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7160,13 +7580,15 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7177,6 +7599,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7240,16 +7665,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7260,6 +7687,9 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7324,13 +7754,15 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7341,6 +7773,9 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7405,16 +7840,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7425,6 +7862,9 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7504,13 +7944,15 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7521,6 +7963,9 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7584,16 +8029,18 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7604,6 +8051,9 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7667,13 +8117,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7684,6 +8136,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7747,16 +8202,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7767,6 +8224,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7831,13 +8291,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7848,6 +8310,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7912,16 +8377,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7932,6 +8399,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8000,13 +8470,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8017,6 +8489,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8085,16 +8560,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8105,6 +8582,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8168,13 +8648,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8185,6 +8667,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8248,16 +8733,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8268,6 +8755,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8344,13 +8834,15 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8361,6 +8853,9 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8437,16 +8932,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8457,6 +8954,9 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8534,13 +9034,15 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8551,6 +9053,9 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8628,16 +9133,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8648,6 +9155,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8756,13 +9266,15 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8773,6 +9285,9 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8849,16 +9364,18 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8869,6 +9386,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8946,13 +9466,15 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8963,6 +9485,9 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9040,16 +9565,18 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9060,6 +9587,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9171,13 +9701,15 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9188,6 +9720,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9267,16 +9802,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9287,6 +9824,9 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9367,13 +9907,15 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9384,6 +9926,9 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9464,16 +10009,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9484,6 +10031,9 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9579,13 +10129,15 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9596,6 +10148,9 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9675,16 +10230,18 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9695,6 +10252,9 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9774,13 +10334,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9791,6 +10353,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9870,16 +10435,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9890,6 +10457,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -9970,13 +10540,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -9987,6 +10559,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10067,16 +10642,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10087,6 +10664,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10171,13 +10751,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10188,6 +10770,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10272,16 +10857,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10292,6 +10879,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10371,13 +10961,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10388,6 +10980,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10467,16 +11062,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10487,6 +11084,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10557,13 +11157,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10574,6 +11176,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10644,16 +11249,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10664,6 +11271,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10736,13 +11346,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10753,6 +11365,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10825,16 +11440,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10845,6 +11462,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -10947,13 +11567,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -10964,6 +11586,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11034,16 +11659,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11054,6 +11681,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11126,13 +11756,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11143,6 +11775,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11215,16 +11850,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11235,6 +11872,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11487,13 +12127,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11504,6 +12146,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11596,16 +12241,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11616,6 +12263,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11710,13 +12360,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11727,6 +12379,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11821,16 +12476,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11841,6 +12498,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -11965,13 +12625,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -11982,6 +12644,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12074,16 +12739,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12094,6 +12761,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12188,13 +12858,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12205,6 +12877,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12299,16 +12974,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc(void)
                                *buf1++ = t1;
                                *buf2++ = t1;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12319,6 +12996,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12569,13 +13249,15 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12586,6 +13268,9 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12676,16 +13361,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12696,6 +13383,9 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12787,13 +13477,15 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12804,6 +13496,9 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -12895,16 +13590,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -12915,6 +13612,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13037,13 +13737,15 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13054,6 +13756,9 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13144,16 +13849,18 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13164,6 +13871,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13255,13 +13965,15 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13272,6 +13984,9 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13363,16 +14078,18 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13383,6 +14100,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13508,13 +14228,15 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13525,6 +14247,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13618,16 +14343,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13638,6 +14365,9 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13732,13 +14462,15 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13749,6 +14481,9 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13843,16 +14578,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13863,6 +14600,9 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -13972,13 +14712,15 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -13989,6 +14731,9 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14082,16 +14827,18 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14102,6 +14849,9 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14195,13 +14945,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14212,6 +14964,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14305,16 +15060,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14325,6 +15082,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14419,13 +15179,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14436,6 +15198,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14530,16 +15295,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14550,6 +15317,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14648,13 +15418,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14665,6 +15437,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14763,16 +15538,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14783,6 +15560,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14876,13 +15656,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -14893,6 +15675,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -14986,16 +15771,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15006,6 +15793,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15114,13 +15904,15 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15131,6 +15923,9 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15239,16 +16034,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15259,6 +16056,9 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15368,13 +16168,15 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15385,6 +16187,9 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15494,16 +16299,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15514,6 +16321,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15654,13 +16464,15 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15671,6 +16483,9 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15779,16 +16594,18 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15799,6 +16616,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -15908,13 +16728,15 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -15925,6 +16747,9 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16034,16 +16859,18 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16054,6 +16881,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16197,13 +17027,15 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16214,6 +17046,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16325,16 +17160,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16345,6 +17182,9 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16457,13 +17297,15 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16474,6 +17316,9 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16586,16 +17431,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16606,6 +17453,9 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16733,13 +17583,15 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16750,6 +17602,9 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16861,16 +17716,18 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl5e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl5o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -16881,6 +17738,9 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -16992,13 +17852,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17009,6 +17871,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17120,16 +17985,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17140,6 +18007,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17252,13 +18122,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17269,6 +18141,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17381,16 +18256,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17401,6 +18278,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17517,13 +18397,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17534,6 +18416,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17650,16 +18535,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17670,6 +18557,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17781,13 +18671,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17798,6 +18690,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -17909,16 +18804,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -17929,6 +18826,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18029,13 +18929,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18046,6 +18948,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18146,16 +19051,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18166,6 +19073,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18268,13 +19178,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18285,6 +19197,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18387,16 +19302,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18407,6 +19324,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18539,13 +19459,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18556,6 +19478,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18656,16 +19581,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18676,6 +19603,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18778,13 +19708,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18795,6 +19727,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -18897,16 +19832,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -18917,6 +19854,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19213,13 +20153,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19230,6 +20172,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19366,16 +20311,18 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19386,6 +20333,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19524,13 +20474,15 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19541,6 +20493,9 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19679,16 +20634,18 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl2e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl2o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19699,6 +20656,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -19867,13 +20827,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -19884,6 +20846,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20020,16 +20985,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20040,6 +21007,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20178,13 +21148,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20195,6 +21167,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -20333,16 +21308,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc(void)
                                *buf1++ = t3;
                                *buf2++ = t3;
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -20353,6 +21330,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
index 9c878429add7b6e9a2275fccc8229a70a8e37eef..1de091bcb9f33ceaf38b7e46fa0e3d599ee4cc5e 100644 (file)
@@ -50,13 +50,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -67,6 +69,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -120,16 +125,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -140,6 +147,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -194,13 +204,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -211,6 +223,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -265,16 +280,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -285,6 +302,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -343,13 +363,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -360,6 +382,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -418,16 +443,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -438,6 +465,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -491,13 +521,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -508,6 +540,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -561,16 +596,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -581,6 +618,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -651,13 +691,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -668,6 +710,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -738,16 +783,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -758,6 +805,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -829,13 +879,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -846,6 +898,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -917,16 +972,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -937,6 +994,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1012,13 +1072,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1029,6 +1091,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1104,16 +1169,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1124,6 +1191,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1194,13 +1264,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1211,6 +1283,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1281,16 +1356,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1301,6 +1378,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1367,13 +1447,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1384,6 +1466,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1448,13 +1533,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1465,6 +1552,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1527,16 +1617,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1547,6 +1639,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1611,16 +1706,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1631,6 +1728,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1695,13 +1795,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1712,6 +1814,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1778,13 +1883,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1795,6 +1902,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1859,16 +1969,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1879,6 +1991,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -1945,16 +2060,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -1965,6 +2082,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2076,13 +2196,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2093,6 +2215,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2175,13 +2300,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2192,6 +2319,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2271,16 +2401,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2291,6 +2423,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2373,16 +2508,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2393,6 +2530,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2474,13 +2614,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2491,6 +2633,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2575,13 +2720,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2592,6 +2739,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2673,16 +2823,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2693,6 +2845,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2777,16 +2932,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void)
                                *buf2++ = t0;
                                *gbuf++ = dtgbuf[h ^ lol][0];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2797,6 +2954,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2896,13 +3056,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -2913,6 +3075,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -2984,16 +3149,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3004,6 +3171,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3076,13 +3246,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3093,6 +3265,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3165,16 +3340,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3185,6 +3362,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3261,13 +3441,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3278,6 +3460,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3354,16 +3539,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3374,6 +3561,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3445,13 +3635,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3462,6 +3654,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3533,16 +3728,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3553,6 +3750,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3642,13 +3842,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3659,6 +3861,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3748,16 +3953,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3768,6 +3975,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3858,13 +4068,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3875,6 +4087,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -3965,16 +4180,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -3985,6 +4202,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4079,13 +4299,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4096,6 +4318,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4190,16 +4415,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4210,6 +4437,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4299,13 +4529,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4316,6 +4548,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4405,16 +4640,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4425,6 +4662,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4505,13 +4745,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4522,6 +4764,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4602,16 +4847,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4622,6 +4869,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4704,13 +4954,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4721,6 +4973,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4803,16 +5058,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4823,6 +5080,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -4961,13 +5221,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -4978,6 +5240,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5084,16 +5349,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5104,6 +5371,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5212,13 +5482,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5229,6 +5501,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5337,16 +5612,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc_genlock(void)
                                *buf2++ = t1;
                                *gbuf++ = dtgbuf[h ^ lol][1];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5357,6 +5634,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5496,13 +5776,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5513,6 +5795,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5620,16 +5905,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5640,6 +5927,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5748,13 +6038,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5765,6 +6057,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -5873,16 +6168,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -5893,6 +6190,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6005,13 +6305,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6022,6 +6324,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6134,16 +6439,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6154,6 +6461,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6261,13 +6571,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6278,6 +6590,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6385,16 +6700,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6405,6 +6722,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6532,13 +6852,15 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6549,6 +6871,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6676,16 +7001,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6696,6 +7023,9 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6824,13 +7154,15 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6841,6 +7173,9 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -6969,16 +7304,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -6989,6 +7326,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7121,13 +7461,15 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7138,6 +7480,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7270,16 +7615,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7290,6 +7637,9 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7417,13 +7767,15 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7434,6 +7786,9 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7561,16 +7916,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 15) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { 
                                copybpl6e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 15) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) {
                                copybpl6o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7581,6 +7938,9 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7697,13 +8057,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7714,6 +8076,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7830,16 +8195,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7850,6 +8217,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -7968,13 +8338,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -7985,6 +8357,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8103,16 +8478,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8123,6 +8500,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8315,13 +8695,15 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8332,6 +8714,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8492,16 +8877,18 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8512,6 +8899,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8674,13 +9064,15 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8691,6 +9083,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }
@@ -8853,16 +9248,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc_genlock(void)
                                *buf2++ = t3;
                                *gbuf++ = dtgbuf[h ^ lol][3];
                        }
-                       if (bpldat_copy[0] && (denise_hcounter & 7) == bplcon1_shift[0]) { 
+                       if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { 
                                copybpl4e();
                        }
-                       if (bpldat_copy[1] && (denise_hcounter & 7) == bplcon1_shift[1]) {
+                       if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) {
                                copybpl4o();
                        }
                        sprites_hidden = sprites_hidden2;
                        #ifdef DEBUGGER
                        *debug_dma_dhpos_odd = denise_hcounter;
                        #endif
+                       denise_hcounter_cmp++;
+                       denise_hcounter_cmp &= 511;
                        denise_hcounter++;
                        denise_hcounter &= 511;
                        denise_hcounter_next++;
@@ -8873,6 +9270,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc_genlock(void)
                        internal_pixel_start_cnt = internal_pixel_cnt;
                }
                denise_hcounter = denise_hcounter_new;
+               if (denise_accurate_mode) {
+                       denise_hcounter_cmp = denise_hcounter_new;
+               }
                denise_cck++;
        }
 }